2015年3月13日金曜日

Outlook 365 でマクロ入門

概要

Outlook365でマクロを動作させる手順をまとめてみました
簡単なサンプルマクロが動作するところまでやってみたいと思います

環境

  • Windows7 64bit
  • Outlook365
  • Microsoft Visual Basic for Applications 7.1

マクロ実行の準備

デフォルトのままだとマクロを実行することができません
「開発」というタブを表示する必要があります

ファイル -> オプション -> リボンのユーザー設定 -> メインタブ

を選択しメインタブの一覧の中に「開発」があると思いますのでそれにチェックを入れます
setup_dev_tool.png

チェックしてOKをクリックするとタブの一覧に「開発」が表示されるようになります

サンプルマクロの作成

マクロを作成してみましょう
先ほど表示されるようにした開発タブから

開発 -> マクロ -> マクロ

をクリックします
select_macro.png

するとダイアログが開くのでマクロ名の部分に作成するマクロの名前を適当に入力します
入力した右側の「作成」をクリックします
create_macro.png
するとマクロのエディタである「Microsoft Visual Basic Applications」が開くのでここでマクロを開発します
(エクセルでマクロをゴリゴリ書いている人は見なれたエディタだと思います)

今回は超簡単なサンプルを書いてみます
マクロ名はtest_macroとします

Sub test_macro()
  MsgBox "Hello World!"
End Sub

と入力して保存します

サンプルの作成はこれで完了です
作成できたので実行してみましょう

実行してみる

Microsoft Visual Basic for Applications のツールバーに緑色の三角形があるのでこれをクリックすると実行できます
execute.png

F5を押しても実行できます
実行するとHello World!と書かれたダイアログが表示されると思います

エディタ上で動作することが確認できたのでOutlook365から実行してみたいと思います

マクロを保存した段階でOutlook365にも組み込まれているので実行するだけでOKです

開発 -> マクロ

と進むと先ほど作成したtest_macroが選択肢に増えているのでtest_macroをクリックします
すると先ほどと同じようにダイアログが表示されると思います

ThisOutlookSession

ここから本題かもしれません
Outlook365のオブジェクトを触ったマクロを書く方法です
先ほど作成したサンプルは

標準モジュール -> Module1

という場所に保存されています
マクロとしてはここでも動作するのですがOutlook365が提供するマクロを使用することはできません

Microsoft Visual Basic for Applications の左メニューに「Microsoft Outlook Objects」というフォルダがあり、その下に「ThisOutlookSession」というOutlookのアイコンがあると思います
このアイコンにマクロを書くことでOutlook365が提供するマクロが書けるようになります
macro_for_outlook.png

「ThisOutlookSession」をダブルクリックすると右ペインにエディタが開きます
開いたら以下のコードを入力してください

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
  Dim objItem
  Set objItem = Session.GetItemFromID(EntryIDCollection)
  If objItem.MessageClass = "IPM.Note" Then
    MsgBox "Hello World!"
  End If
End Sub

簡単にポイントを説明すると超重要なのがApplication_NewMailExというサブセットでこれがOutlook365が提供するマクロで、こいつを定義するとメールが受信された際に毎回実行されます
IPM.Noteは電子メールを表すオブジェクトで受信したオブジェクトが電子メールであった場合にMsgBoxを実行するようにしています

記載が完了したら保存しましょう
エディタを閉じてしまって再度編集したい場合は「ThisOutlookSettion」をダブルクリックすれば保存したマクロが表示されます

実行してみる

サンプルマクロのように三角マークをクリックしても何も起きません
というかクリックするとマクロの作成ダイアログが立ち上がってしまいます
なので Microsoft Visual Basic for Applications 上でテストすることはできません

Outlook365に戻って動作を確認するしかありません
ツールバーの左上にあるOutlookボタンを押すかCtrl + TAB でウィンドウを切り替えてください
メールが来ないという場合は自分宛にメールを作成してテストしてみてください
受信時にダイアログが表示されればOKです

このテストは文字通り受信時に毎回ダイアログを出すので頻繁にメールを受信する方はすぐに停止したほうがいいと思います
停止する場合は再度エディタで「ThisOutlookSettion」を開いてコメントアウトするなりコードを削除するなりして上書き保存してください

最後に

基本構文は Visual Basic なのでif文やらfor文やらも使えます
なので Visual Basic を勉強しておくと更に書きやすくなると思います
Outlook365のマクロではメールや受信トレイなどに触れるオブジェクトが用意されており、それを使ってOutlook365用のマクロを作成する感じになります

基本メールを読むのが嫌いなのでこれで本当に必要なメールだけを読むようにするとかできそうです

参考サイト

0 件のコメント:

コメントを投稿