Как показать дату начала для повторяющейся серии? - PullRequest
1 голос
/ 21 июля 2009

Используя VBA, мне нужно показывать дату начала каждого INSTANCE повторяющейся встречи в Outlook.

Проблема в том, что когда я использую appt.start, он показывает дату начала СЕРИИ, которая не помогает !!

Пример: повторяющаяся встреча происходит 1-го числа каждого месяца в 2009 году. Я хочу показать 12 МГНОВЕНИЙ, с 12 РАЗНЫМИ датами начала (01.01.09, 02.01.09 и т. Д.). Другими словами, все 12 НЕ должны показывать дату начала = 1/1/09.

Спасибо

1 Ответ

1 голос
/ 25 января 2013

Ограничение по дате выберет экземпляры повторяющейся встречи, которые происходят между датами, указанными НО при опросе свойств экземпляра - например, .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

и т.д.

...