2017-12-21 55 views
0

今月の5日から翌月の4日(その日の予定を含む)に発生するカレンダーで、すべての予定を取得しようとしています。ここでアイテムOutlook予定表(VBA)内の予定の更新

はコードです:

Private Sub Application_Startup() 

    Dim oOL As New Outlook.Application 
    Dim oNS As Outlook.NameSpace 
    Dim oAppointments As Object 
    Dim monthlyPats As Object 
    Dim oAppointmentItem As Outlook.AppointmentItem 

    'Set up date filter 
    Dim sMth As Date 
    Dim eMth As Date 

    sMth = dhFirstDayInMonth() + 3 '4th of this month 
    eMth = dhLastDayInMonth() + 4 '4th of next month 

    Dim eDate As String 
    eDate = "[End] < '" & eMth & "'" 

    Dim sDate As String 
    sDate = "[Start] > '" & sMth & "'" 

    'Restrict tasks based on date filters 
    Set oNS = oOL.GetNamespace("MAPI") 
    Set oAppointments = Session.GetDefaultFolder(olFolderCalendar).Folders("Portfolio analysis scheduler").Items.Restrict(eDate) 
    Set monthlyPats = oAppointments.Restrict(sDate) 

End Sub 

dhFirstDayInMonth()とdhLastDayInMonth()関数は、単に現在の月の最初と最後の日を取得します。

私は2018年1月4日に2つのイベントを開催しています.1つは一日中繰り返されるイベントであり、もう一つは終日続く独立イベントです。

残念ながら、再発イベントのみが引き出されます。私がそれらの両方を再現させると、両方とも私が望むものであるmonthlyPatsでキャプチャされます。

誰も説明して、意味をなさないのでこの問題の解決策を提示できますか?

答えて

0

outlookの制限事項は悪夢になることがありますが、IncludeRecurrencesプロパティがTrueに設定され、開始日でソートされていることを確認しました。これはトリックを行うようです。

はまた、私は制限文字列が一度に両方の仕事を作って、ビットより堅牢であるように思わ:

Private Sub Application_Startup() 

    Dim oOL As New Outlook.Application 
    Dim oNS As Outlook.NameSpace 
    Dim allAppointments As Object 
    Dim oAppointments As Object 
    Dim monthlyPats As Object 
    Dim oAppointmentItem As Outlook.AppointmentItem 

    'Set up date filter 
    Dim sMth As Date 
    Dim eMth As Date 

    sMth = dhFirstDayInMonth() + 3 '4th of this month 
    eMth = dhLastDayInMonth() + 5 '5th of next month 

    Dim rstDate As String 
    rstDate = "[Start] > '" & sMth & "'" & " AND " & "[End] < '" & eMth & "'" 

    'Restrict tasks based on date filters 
    Set oNS = oOL.GetNamespace("MAPI") 
    Set allAppointments = Session.GetDefaultFolder(olFolderCalendar).Folders("Portfolio analysis scheduler").Items 
    allAppointments.IncludeRecurrences = True 
    allAppointments.Sort "[Start]" 

    Set monthlyPats = allAppointments.Restrict(rstDate) 
    monthlyPats.IncludeRecurrences = True 

End Sub 
関連する問題