皆様こんにちは、ノグチです。
以前の記事では、Outlookの予定を登録する方法をご紹介しました。
登録した予定はOutlookのカレンダーを見れば一目瞭然ですが、ボタン一つでチェックできれば更に便利ですよね。
Outlook VBAならできるかもしれませんよ。
ということで今回は、Outlookに登録されている予定を取得してメッセージで表示する方法をご紹介します!
Outlookの予定を取得する
GetDefaultFolderメソッドで予定表フォルダにアクセス
以前の記事で、受信メールフォルダにアクセスする方法をご紹介しました。
予定についても、考え方は受信メールフォルダにアクセスする場合とほぼ同じ。
GetDefaultFolderメソッドの引数に、予定表のフォルダを表す定数olFolderCalendorを指定すればOKです。
こんな風に。
これで、予定表のFolderオブジェクトが取得できます。
Itemsメソッドとプロパティで予定の内容を取得
予定表のFolderオブジェクトが取得できたら、Itemsメソッドで予定を取得して、更にプロパティで予定の情報を取得しましょう。
Itemsメソッド記述方法と各プロパティは、下記記事でご紹介していますので、こちらをご覧ください。
たとえば、予定の件名と開始時間を取得したいとしたら、ItemsメソッドのSubjectプロパティとStartプロパティを使って、こんな風に記述します。
Private Sub GetAppointment() Dim myNamespace As NameSpace Dim myFolder As Object Set myNamespace = GetNamespace("MAPI") Set myFolder = myNamespace.GetDefaultFolder(olFolderCalendar) MsgBox myFolder.Items(1).Start & vbCrLf & myFolder.Items(1).Subject End Sub
このコードを実行してみると…
この通り、予定の内容を取得して、メッセージで表示できていますね。
日時を指定して登録済みの予定を取得する
さて、上でご紹介したコードに更に手を加えて、今度は指定した日付の予定が取得できるようにしてみましょう。
上のコードのままでは、実用的とは言えませんからね。
何も難しいことはなく、For Each文とIf文を使って、予定フォルダー内の各予定が指定条件にマッチするかを見てあげればよいだけです。
上のコードに、For Each文で予定フォルダ内の予定を1件ずつ取得する処理と、取得した予定が条件にマッチしているか?をIf文でチェックする処理を入れてみましょう。
こんなコードになります。
Private Sub GetAppointment() Dim myNamespace As NameSpace Dim myFolder As Object Dim ObjAppo As Object Dim strMsg As String Set myNamespace = GetNamespace("MAPI") Set myFolder = myNamespace.GetDefaultFolder(olFolderCalendar) For Each ObjAppo In myFolder.Items If Format(ObjAppo.Start, "yyyy/mm/dd") = Format("2019/03/20", "yyyy/mm/dd") Then With ObjAppo strMsg = strMsg & Format(.Start, "hh:mm") & Space(3) & _ ObjAppo.Subject & vbCrLf End With End If Next ObjAppo MsgBox strMsg End Sub
そして実行してみると…
この通り、3月20日に登録された予定を全て取得してくれていますね。
Date関数で今日日付の予定を取得する
上のコードの、If文の条件にDate関数をセットすれば、本日日付の予定を取得することができますよ。
このIf文を…
If Format(ObjAppo.Start, "yyyy/mm/dd") = Format("2019/03/20", "yyyy/mm/dd") Then
このように記述すればOKです。
If Format(ObjAppo.Start, "yyyy/mm/dd") = Date Then
これなら、カレンダーを見なくてもマクロを実行すれば、今日の予定を確認できますね。
最後に
今回は、Outlookのに登録された予定を取得する方法をご紹介しました。
Outlookには色々なイベントプロシージャが用意されていますので、イベントと組み合わせて使ってみるとより便利に使えるかもしれませんね。
それでは、最後までお読みいただきありがとうございました!
連載目次:Outlook VBA 予定を登録してみよう
Outlook VBAで、予定の管理も便利にしてしまいましょう。
VBAでの予定の登録だけでなく、登録済みの予定への操作方法もご紹介しています。