このトピックでは、Jet クエリを使用して、特定の開始時刻から終了時刻までの期間に発生する予定を既定の予定表フォルダーで検索する Visual Basic for Applications (VBA) の例を示します。このクエリは、この期間内に全体的に発生する予定、つまり、開始時刻以降に開始され、終了時刻以前に終了する予定を返します。また、この期間と重なる予定、つまり、期間が始まる前に開始され期間内に終了する予定、期間内に開始され期間が終わってから終了する予定、および開始時刻前に開始され終了時刻より後に終了する (期間全体と重なる) 予定も返します。返される結果には、定期的な予定が含まれます。
たとえば、開始日以降に開始され、終了日以前に終了する予定を照会するとします。これは、次のようなクエリになります。
しかし、この期間内に全体的に発生するすべての予定 "および" この期間と重なるすべての予定を確実に検索するには、期間の終了時刻以前に開始された予定、および期間の開始時刻以降に終了する予定を検索するクエリを使用する必要があります。これは、次のようなクエリになります。
特定の期間と重なる予定を考慮に入れるのは、その期間に発生するすべての予定を予定表から削除する場合に便利です。この場合、特定の期間内に開始および終了する予定を照会するだけでは十分ではありません。
サンプル コード内の
Sub FindApptsInTimeFrame() Dim myStart As Date Dim myEnd As Date Dim oCalendar As Outlook.folder Dim oItems As Outlook.items Dim oResItems As Outlook.items Dim oAppt As Outlook.AppointmentItem Dim strRestriction As String myStart = Date myEnd = DateAdd("d", 5, myStart) Debug.Print "Start:", myStart Debug.Print "End:", myEnd Set oCalendar = Application.session.GetDefaultFolder(olFolderCalendar) Set oItems = oCalendar.items oItems.IncludeRecurrences = True oItems.Sort "[Start]" strRestriction = "[Start] <= '" & Format$(myEnd, "mm/dd/yyyy hh:mm AMPM") _ & "' AND [End] >= '" & Format(myStart, "mm/dd/yyyy hh:mm AMPM") & "'" Debug.Print strRestriction 'Restrict the Items collection Set oResItems = oItems.Restrict(strRestriction) For Each oAppt In oResItems Debug.Print oAppt.Start, oAppt.Subject Next End Sub