Ä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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage