前提・実現したいこと
日々の日報テンプレートを自動作成するため、Outlook2016のアプリから当日の予定のタイトルのみを抽出し、メールテンプレートを作成するマクロを組もうとしております。
発生している問題・エラーメッセージ
下記のサイトを参考にし、テンプレートファイルのパスのみを変更したコードを実行したところ、予定の抽出自体は問題なくできているものの、抽出される予定に意図しないものが含まれておりました。
具体的には、定期的な予定として登録されているものが1週間分全て記載されてしまっております。
例えば、月曜日のみの予定を取得したいのに、火曜日や水曜日にある定期的な予定も含まれてしまう(定期的ではない予定については取得されない)、といった事象です。
http://wiki.tk2kpdn.com/outlook-get-appointments-by-macro/
該当のソースコード
VBA
1Public Sub CreateDailyMail() 2 Dim l_calendar As Outlook.Folder 3 Set l_calendar = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar) 4 5 Dim l_appointments As Outlook.Items 6 Set l_appointments = l_calendar.Items 7 8 Set l_appointments = l_appointments.Restrict( _ 9 "(([Start] = '2015/12/24 0:00') And ([AllDayEvent] = True)) Or " & _ 10 "(([Start] >= '2015/12/24 0:00') And ([End] < '2015/12/25 0:00'))") 11 12 Dim l_appointmentList As String 13 Dim l_appointment As Outlook.AppointmentItem 14 15 For Each l_appointment In l_appointments 16 l_appointmentList = l_appointmentList & l_appointment.Subject & vbCrLf 17 Next 18 19 ' テンプレート ファイルのパスの部分は、環境に応じて設定してください。 20 Dim l_mail As Outlook.MailItem 21 Set l_mail = Application.CreateItemFromTemplate("C:...\DailyReport.oft") 22 23 l_mail.Body = Replace(l_mail.Body, "<<Appointments>>", l_appointmentList) 24 25 l_mail.Display 26End Sub 27
試したこと
恐らく、l_appointments.Resctictの中の条件が上手く絞れていないことが原因かと思い、AllDayEventの条件を削除したりしたのですが、出力結果は変わらずでした。何か上記の事象が引き起こされる原因についてご助言いただけますと最愛です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/02 03:36
2021/06/10 04:36