Как изменить свойства (часовой пояс) повторяющихся встреч в Outlook 2010 VBA
Я пишу новую и пересмотренную версию макроса VBA Outlook, которая будет проходить через все встречи в календаре пользователя и изменять каждую повторяющуюся серию ». часовой пояс к центральному стандарту. Однако независимо от того, что я делаю, я не могу заставить его правильно обращаться к повторению. В настоящее время, когда я отлаживаю макрос, он потерпит неудачу при первом вызове ex.AppointmentItem.Subject (в операторе Debug.Print после определения шаблона повторения rPattern). Главный вопрос здесь: как я могу получить доступ и изменить всю серию повторяющихся встреч одновременно? Могу ли я а) изменить основную встречу, б) перебрать все встречи в серии (что может не устанавливать все будущие вхождения, как мне нужно), или в) перебрать коллекцию исключений и изменить повторение оттуда? Мне сказали, что перебор коллекции исключений (хотя вводит в заблуждение по имени) - единственный способ изменить повторение. Это правильно?
Я высоко ценю любую помощь, которую вы можете оказать, спасибо!
Примечание. Элемент aItem & lt; & gt; Null был закомментирован как тест, по какой-то причине проверка элемента Null (даже использованного ключевого слова Nothing) всегда вызывала ошибку.
Public Sub IterateAll()
Dim olApp As New Outlook.Application
Dim aObject As Object
Dim calCollection As Outlook.Items
Dim tzs As Outlook.TimeZones
Dim tzCentral As Outlook.TimeZone
Dim tzUTC As Outlook.TimeZone
Dim olNameSpace As Outlook.NameSpace
Dim rPattern As Outlook.RecurrencePattern
Dim ex As Outlook.Exception
Dim s As Outlook.TimeZone
Dim e As Outlook.TimeZone
Set olNameSpace = olApp.GetNamespace("MAPI")
Set calCollection = olNameSpace.GetDefaultFolder(olFolderCalendar).Items
Set tzs = Application.TimeZones
Set tzCentral = tzs("Central Standard Time")
Set tzUTC = tzs("UTC")
For Each aObject In calCollection
If aObject.IsRecurring Then
Set rPattern = aObject.GetRecurrencePattern
Debug.Print ("Subject: " + aObject.Subject)
Debug.Print ("Old Time Zone is " & aObject.StartTimeZone)
aObject.StartTimeZone = tzCentral
aObject.EndTimeZone = tzCentral
Debug.Print ("New Time Zone is " & aObject.StartTimeZone)
aObject.Save
End If
Next
End Sub