OUTLOOK VBA アラームと同時に自動でマクロ実行

タイトルのマクロは、以下です。標準モジュールでなく、「ThisOutlookSession」に入れてください。

Private Sub Application_Reminder(ByVal objItem As Object)
    
    Dim strItemSubject As String

    ' 予定アイテムの件名を指定します。
    strItemSubject = "予定"

    ' 予定アイテムの件名とアイテムのオブジェクトクラスが”olAppointment”(26番)だった場合の条件を設定します。
    If objItem.Subject = strItemSubject And objItem.Class = 26 Then
        ' 起動したいプロシージャを指定します。
        Call CreateNewMail  
    End If
End Sub

Sub CreateNewMail()
    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem

    ' Outlookアプリケーションのインスタンスを取得
    Set olApp = Outlook.Application
    ' 新しいメールアイテムを作成
    Set olMail = olApp.CreateItem(olMailItem)

    ' メールのプロパティを設定
    With olMail
        .Subject = "テスト件名"
        .Body = "テスト件名の内容です。"
        .To = "example@example.com"
        .Display  ' メールを表示
    End With

    ' オブジェクトの解放
    Set olMail = Nothing
    Set olApp = Nothing
End Sub

コード全体の概要

このコードは、Outlookのリマインダーがトリガーされたときに、特定の件名を持つ予定アイテムに対して新しいメールを自動的に作成するものです。

各部分の説明

Private Sub Application_Reminder(ByVal objItem As Object)

  • 概要: Outlookのリマインダーイベントが発生したときに実行されるサブルーチン。
  • 引数:
    • objItem: リマインダーがトリガーされた予定アイテムオブジェクト。
内容
  1. Dim strItemSubject As String:
    • 文字列型変数strItemSubjectを宣言。
  2. strItemSubject = "予定":
    • strItemSubjectに特定の件名(この場合は「予定」)を代入。
  3. If objItem.Subject = strItemSubject And objItem.Class = 26 Then:
    • 予定アイテムの件名がstrItemSubjectと一致し、かつオブジェクトクラスが26(予定アイテムを示す)である場合に以下の処理を実行。
  4. Call CreateNewMail:
    • 条件が満たされた場合、CreateNewMailプロシージャを呼び出して新しいメールを作成。

End Sub

  • Application_Reminderサブルーチンの終了を示す。

Sub CreateNewMail()

  • 概要: 新しいメールを作成して表示するサブルーチン。
内容
  1. Dim olApp As Outlook.Application:
    • Outlookアプリケーションオブジェクトを宣言。
  2. Dim olMail As Outlook.MailItem:
    • メールアイテムオブジェクトを宣言。
  3. Set olApp = Outlook.Application:
    • 現在のOutlookアプリケーションのインスタンスを取得し、olAppに代入。
  4. Set olMail = olApp.CreateItem(olMailItem):
    • 新しいメールアイテムを作成し、olMailに代入。
  5. With olMail:
    • 新しいメールアイテムのプロパティを設定するブロックを開始。
  6. .Subject = "テスト件名":
    • メールの件名を「テスト件名」に設定。
  7. .Body = "テスト件名の内容です。":
    • メールの本文を「テスト件名の内容です。」に設定。
  8. .To = "example@example.com":
    • メールの宛先をexample@example.comに設定。
  9. .Display:
    • メールを表示。
  10. End With:
    • Withブロックの終了。
  11. Set olMail = Nothing:
    • olMailオブジェクトを解放。
  12. Set olApp = Nothing:
    • olAppオブジェクトを解放。

End Sub

  • CreateNewMailサブルーチンの終了を示す。

補足説明

  • リマインダーイベントのトリガー: Outlookのリマインダーがトリガーされると、Application_Reminderイベントが発生し、このサブルーチンが実行されます。
  • プロシージャの呼び出し: 指定した条件(件名が「予定」かつオブジェクトクラスが26)が満たされると、CreateNewMailプロシージャが呼び出され、新しいメールが作成されて表示されます。

オブジェクトクラスの詳細

OlObjectClass 列挙 (Outlook) オブジェクトクラスの詳細

https://docs.microsoft.com/ja-jp/office/vba/api/outlook.olobjectclass

Follow me!