繰り返しの予定
概要
Outlook の予定またはタスクで設定できる「繰り返し」について。
参照:RecurrencePattern object (Outlook) | Microsoft Docs
AppointmentItem または TaskItem で設定できる。 上記2つには IsRecurring(Boolean) プロパティがあり、まずこれで繰り返しのアイテムかどうか確認できる。 繰り返しの詳細は、GetRecurrencePattern メソッドで取得できる。 GetRecurrencePattern または ClearRecurrencePattern メソッドを呼び出すと、IsRecurring プロパティが自動的に変更される。 つまり、何も気にせず GetRecurrencePattern を呼び出すと、IsRecurring が勝手に true になるので注意。
繰り返しの予定の作り方
AppointmentItem の GetRecurrencePattern メソッドを呼び出し、繰り返しの設定をする。
参照: RecurrencePattern object (Outlook) | Microsoft Docs
下記は、現在日時に予定を作成し、2日ごとに3回繰り返しの設定をするサンプル。
Public Sub Sample()
Dim oItem As AppointmentItem
Dim dStart As Date
Dim dEnd As Date
Dim recurPattern As RecurrencePattern
dStart = Now
dEnd = DateAdd("h", 1, dStart)
Set oItem = Application.CreateItem(olAppointmentItem)
oItem.Subject = "繰り返しテスト"
oItem.Start = dStart
oItem.End = dEnd
oItem.ReminderSet = False
' 2日ごとに3回繰り返す
Set recurPattern = oItem.GetRecurrencePattern
recurPattern.RecurrenceType = olRecursDaily
recurPattern.Interval = 2
recurPattern.Duration = 3
oItem.Save
End Sub
繰り返しの予定の取得
検索 (Filter や Restrict) を使う場合は、通常の予定の検索と手順は同じ。
検索の手順は下記の通り:
- Items を Start の昇順で並べ替える。
- IncludeRecurrences プロパティを true にする。
- Items に終了日のない繰り返しの予定があるときに IncludeRecurrences をtrueにすると、Items.Count の値がundefinedになるので注意。
- Filter や Restrict を使う。
参考:Items.IncludeRecurrences property (Outlook) | Microsoft Docs
日付を指定して繰り返しの予定を取得
AppointmentItem.RecurrencePattern().GetOccurrence(DateTime)
メソッドを使うと、
繰り返しの予定のうち、指定した日付の AppointmentItem
を取得できる。
指定した日に予定がない場合はエラーになる。
実行時エラー -2147467259 (80004005)
この定期的なアイテムの 1 回分に変更を加えたので、この回はもう存在しません。開いているアイテムをすべて閉じて、再度実行してください。
引数に指定する日付は、予定の開始時刻と同時刻でなければいけない 。開始時刻が12:00なら、単純に「2020/10/08」と日付だけ指定している下記のサンプルではエラーになる。
dt = "2020/10/08"
oItem2 = oItem.GetRecurrencePattern().GetOccurrence(dt)
時刻もしていすればエラーにならない。
dt = "2020/10/08 12:00"
oItem2 = oItem.GetRecurrencePattern().GetOccurrence(dt)
参考:vb.net - GetOccurrence always throws exception - Stack Overflow