Ändern der Eigenschaften (Zeitzone) von wiederkehrenden Terminen in Outlook 2010 VBA
Ich schreibe eine neue und überarbeitete Version eines VBA Outlook-Makros, die alle Termine im Kalender eines Benutzers durchläuft und die Zeitzone jeder wiederkehrenden Serie in Central Standard ändert. Unabhängig davon, was ich tue, kann ich es anscheinend nicht dazu bringen, ordnungsgemäß auf die Wiederholung zuzugreifen. Derzeit schlägt das Debuggen des Makros beim ersten Aufruf von ex.AppointmentItem.Subject fehl (in der Debug.Print-Anweisung, nachdem das Wiederholungsmuster rPattern definiert wurde). Die zentrale Frage lautet hier: Wie kann ich auf eine ganze Reihe von Terminen gleichzeitig zugreifen und diese ändern? Kann ich a) den Mastertermin ändern, b) alle Termine in der Serie durchlaufen (wodurch möglicherweise nicht alle zukünftigen Vorkommnisse nach Bedarf festgelegt werden) oder c) die Ausnahmesammlung durchlaufen und die Wiederholung von dort aus ändern? Mir wurde gesagt, dass das Durchlaufen der Exceptions-Sammlung (obwohl der Name irreführend ist) die einzige Möglichkeit ist, die Wiederholung zu ändern. Ist das richtig?
Ich freue mich sehr über Ihre Hilfe, danke!
Hinweis: aItem <> Null wurde als Test auskommentiert. Aus irgendeinem Grund verursachte die Suche nach einem Null-Element (auch wenn das Schlüsselwort Nothing ausprobiert wurde) immer einen Fehler.
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