予定表の変更をメールで通知するマクロ


コメントにて以下のご要望をいただきました。


OutlookVBA初心者です。
お力添えを頂きたく初投稿させて頂きます。

予定表に関して以下イベントのハンドラを実装したいのですが、
どのようにしてイベントを検知すればよいかわかりません。

・予定表に新たにスケジュール登録された場合
・予定表に存在するスケジュールの件名や時間等のプロパティが変更された場合

上記タイミングを検知し、外部システムへ通知を送りたいと思っております。

コメント等頂けますと幸いです。

よろしくお願い致します。


予定表フォルダーにアイテムが追加されたり、変更されたことを検出するには、フォルダーに含まれるアイテムの一覧である Items プロパティの ItemAdd イベントや ItemChange イベントが使用できます。
これらのイベントを受け取るには、マクロの先頭で Items プロパティのイベントを受け取るオブジェクトを WithEvents というキーワードをつけて宣言し、Application オブジェクトの Startup イベントで予定表の Items プロパティを格納しておく必要があります。
なお、ItemChange イベントには変更後のアイテムが引数として渡されますが、どのプロパティが変更されたかについては判断はできません。
マクロは以下のようになります。

' ここをトリプルクリックでマクロ全体を選択できます。

Dim myCalendar As Folder
Dim WithEvents myCalendarItems As Items
' Outlook 起動時にイベント ハンドラーを設定する
Private Sub Application_Startup()
     Set myCalendar = Session.GetDefaultFolder(olFolderCalendar)
     Set myCalendarItems = myCalendar.Items
End Sub
' 予定表にアイテムが追加された時の処理
Private Sub myCalendarItems_ItemAdd(ByVal Item As Object)
     NotifyCalendarChange Item, "追加"
End Sub
' 予定表のアイテムが変更された時の処理
Private Sub myCalendarItems_ItemChange(ByVal Item As Object)
     NotifyCalendarChange Item, "変更"
End Sub
'
Private Sub NotifyCalendarChange(ByVal apptItem As AppointmentItem, strOp As String)
     ' 通知メールの送付先
     Const NOTIFY_TO = "notify@example.com"
     Dim mailNotify As MailItem
     ' 新規メールを作成
     Set mailNotify = CreateItem(olMailItem)
     With mailNotify
         ' メールの件名、本文、宛先を設定し、送信
         .Subject = "予定表アイテムの" & strOp & "通知"
         .Body = "以下の予定アイテムが" & strOp & "されました。" _
           & vbCrLf & "件名:" & apptItem.Subject _
           & vbCrLf & "開始日時:" & apptItem.Start _
           & vbCrLf & "終了日時:" & apptItem.End _
           & vbCrLf & "場所:" & apptItem.Location _
           & vbCrLf & "本文:" & vbCrLf & apptItem.Body
         .To = NOTIFY_TO
         .Send
     End With
End Sub

マクロの登録方法やメニューへの追加について

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中