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
: リマインダーがトリガーされた予定アイテムオブジェクト。
内容
Dim strItemSubject As String
:- 文字列型変数
strItemSubject
を宣言。
- 文字列型変数
strItemSubject = "予定"
:strItemSubject
に特定の件名(この場合は「予定」)を代入。
If objItem.Subject = strItemSubject And objItem.Class = 26 Then
:- 予定アイテムの件名が
strItemSubject
と一致し、かつオブジェクトクラスが26
(予定アイテムを示す)である場合に以下の処理を実行。
- 予定アイテムの件名が
Call CreateNewMail
:- 条件が満たされた場合、
CreateNewMail
プロシージャを呼び出して新しいメールを作成。
- 条件が満たされた場合、
End Sub
Application_Reminder
サブルーチンの終了を示す。
Sub CreateNewMail()
- 概要: 新しいメールを作成して表示するサブルーチン。
内容
Dim olApp As Outlook.Application
:- Outlookアプリケーションオブジェクトを宣言。
Dim olMail As Outlook.MailItem
:- メールアイテムオブジェクトを宣言。
Set olApp = Outlook.Application
:- 現在のOutlookアプリケーションのインスタンスを取得し、
olApp
に代入。
- 現在のOutlookアプリケーションのインスタンスを取得し、
Set olMail = olApp.CreateItem(olMailItem)
:- 新しいメールアイテムを作成し、
olMail
に代入。
- 新しいメールアイテムを作成し、
With olMail
:- 新しいメールアイテムのプロパティを設定するブロックを開始。
.Subject = "テスト件名"
:- メールの件名を「テスト件名」に設定。
.Body = "テスト件名の内容です。"
:- メールの本文を「テスト件名の内容です。」に設定。
.To = "example@example.com"
:- メールの宛先を
example@example.com
に設定。
- メールの宛先を
.Display
:- メールを表示。
End With
:With
ブロックの終了。
Set olMail = Nothing
:olMail
オブジェクトを解放。
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