2009-07-20 12 views
1

VBAを使用すると、Outlookで定期的な予定の各インスタンスの開始日を表示する必要があります。繰り返しシリーズのインスタンスの開始日を表示するにはどうすればいいですか?

問題は、appt.startを使用すると、シリーズの開始日が表示されることです。これは役に立ちません。

例:2009年の毎月初めに定期的な予定が発生します。 12の異なる開始日を12の異なる開始日(1/1/09、2/1/09など)で表示したいとします。 つまり、12のすべてが開始日= 1/1/09を示すべきではありません。

おかげ

答えて

1

日付制限は、インスタンスのプロパティを調べる際に指定した日付の間に発生しかし定期的な予定のインスタンスをピックアップします - たとえば.IsRecurring.AllDayEventのために、Outlookは定期的な最初の方のポインタをリダイレクト任命(それまでの親)。これを繰り返す方法は、他のプロパティを調べて失う前に開始日と終了日(ローカル変数にコピーする)を調べることです。

Dim olNS As Outlook.Namespace 
Dim olRec As Outlook.Recipient 

Dim myCalItems As Outlook.Items 
Dim strRestriction As String 

Dim ItemstoCheck As Outlook.Items 
Dim MyItem As Outlook.AppointmentItem 

Dim datAppStart As Date 
Dim datAppEnd As Date 

Set myCalItems = olNS.GetSharedDefaultFolder(olRec, olFolderCalendar).Items 

' Including recurrent appointments requires sorting by the Start property, apparently! 
myCalItems.Sort "[Start]", False 
myCalItems.IncludeRecurrences = True 

strRestriction = "[Start]<= " & Quote(datEndDate & " 12:00 AM") & " AND [End] >= " & _ 
    Quote(datStartDate & " 11:59 PM") 
Set ItemstoCheck = myCalItems.Restrict(strRestriction) 

For Each MyItem In ItemstoCheck 
    If MyItem.Class = olAppointment Then   

'Save Start and end dates in case replaced by first instance of recurring appointment 
datAppStart = MyItem.Start 
datAppEnd = MyItem.End 

など

+0

これは私のための核心だった: '」再発の予定を含むが明らかに、スタートプロパティで並べ替えが必要です! myCalItems.Sort "[開始]"、偽 myCalItems.IncludeRecurrences = True' –

関連する問題