Outlook VBAのイベント一覧



OutolookVBAのイベントについて

仕事のタスクを開始するきっかけとなる機会が多いOutlookですが、具体的にどのようなケースがあり、VBAでどのように自動化が実現できるか説明します。

一番多いきっかけとなるイベントはメールの受信でしょうか。次にスケジュールの期限に近づいて発生するアラート等も想定されます。 そのきっかけから開始される作業をOutlookのVBAで実現するためにはまずOutlookアプリケーションオブジェクト内に定義されているイベントを利用し、きっかけをキャッチする必要があります。(なお、イベントをキャッチする機能のことをイベントレシーバーと呼びます。)

実現可能なイベントのパターンは以下の通りとなります。
参考:https://docs.microsoft.com/ja-jp/office/vba/api/outlook.application



表1 Outlookアプリケーションオブジェクトイベント一覧

イベント名 説明 サンプル
AdvancedSearchComplete 検索が完了した後に発生 Private Sub Application_AdvancedSearchComplete(ByVal SearchObject As Search)
End Sub
AdvancedSearchStopped 検索が中止した後に発生 Private Sub Application_AdvancedSearchStopped(ByVal
End Sub
BeforeFolderSharingDialog Folderオブジェクトの [共有] ダイアログ ボックスが表示される前に発生 Private Sub Application_BeforeFolderSharingDialog()
End Sub
ItemLoad Outlook アイテムをメモリに読み込むときに発生 Private Sub Application_ItemLoad()
End Sub
ItemSend Outlook アイテムが送信されるときに発生 Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
MsgBox “件名:” & Item.Subject & “を送信しますがよいですか?”
End Sub
MAPILogonComplete ユーザーがシステムにログオンした後に発生します。 Private Sub Application_MAPILogonComplete()
End Sub
NewMail メッセージを受信トレイで受信したときに発生 ルールの処理が行われるときに発生 Private Sub Application_NewMail()
End Sub
NewMailEx 受信トレイに新しいアイテムを受信すると発生 NewMailとの違いは、動きは同じであるが、NewMailExはIDにより受信アイテムを特定することが可能。Outlook 2003より追加。 Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
End Sub
OptionsPagesAdd ユーザーが Outlook の [オプション] ダイアログ ボックスの [アドイン] タブ上のオプションボタンをクリックするたびに発生 Private Sub Application_OptionsPagesAdd(ByVal Pages As Outlook.PropertyPages)
End Sub
Quit Microsoft Outlook が終了するときに発生 Private Sub Application_Quit()
End Sub
Reminder アラームが表示される直前に発生 Private Sub Application_Reminder(ByVal Item As Object)
End Sub
Startup Microsoft Outlook の起動中、すべてのアドイン プログラムが読み込まれた後に発生 Private Sub Application_Startup()
End Sub



例えば、受信トレイに新規アイテムを受信したというきっかけを実現するには「NewMailEx」を利用します。 ※類似の機能で「NewMail」がありますが、「NewMailEx」は受信アイテムを特定できる機能があり、現在ではほぼこちらのイベントが利用されています。

早速以下のコードをプロジェクトのコードエリアへ貼り付けてみましょう。

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
  Dim objMail As Object
  Set objMail = Session.GetItemFromID(EntryIDCollection)
  MsgBox "件名:" & objMail.Subject & "を受信しました。"
End Sub

コードの貼り付け方についてはこちらをご参照ください。 貼り付けが完了したら、テストメール(件名:test)を自分あてに送信してみます。 受信後、メッセージが表示されたかと思います。

※メッセージが出ない方はマクロ実行が無効化されている場合がありますので、こちらを参考に有効化をお願いします。なお、会社によっては無効化するポリシーの場合がありますので、有効化ができるか予め社内のシステム管理者へ確認をお願いします。

このメッセージ表示部分の機能を例えばエクセルファイルを開き、本文をエクセルファイルへ書き込んだり、メールへ添付されているエクセルファイルをフォルダへ格納したり、機能を拡張、変更していくことにより現在手動で行っている作業に近づけていきます。
またイベントを例えば送信時[ItemSend]に変更すると送信前に起動できるようになり、きっかけのタイミングを変えることができます。

今回はきっかけをキャッチするイベントについての説明でしたが、次回はイベントを検知した後にできる様々な機能について説明をしていきたいと思います。

【Outlook VBA】カンタンに送信前に入力した宛先を確認するメッセージを表示する

【Outlook VBA】Outlook VBAのオブジェクトについて

【Outlook VBA】Outlook VBAのプロパティとメソッドについて



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です