ユーザーの予定表のすべての予定を調べ、すべての定期的なシリーズのタイム ゾーンを中央標準に変更する VBA Outlook マクロの新しい改訂版を作成しています。しかし、何をしても、繰り返しに適切にアクセスできないようです。現在、マクロをデバッグすると、最初に ex.AppointmentItem.Subject を呼び出すときに失敗します (繰り返しパターン rPattern が定義された後の Debug.Print ステートメント内)。ここでの中心的な質問は、一連の定期的な予定全体に一度にアクセスして変更するにはどうすればよいかということです。a) マスター アポイントメントを変更できますか、b) シリーズ内のすべてのアポイントを反復処理できますか (必要に応じて将来のすべてのオカレンスを設定できない可能性があります)、または c) 例外コレクションを反復処理し、そこから繰り返しを変更しますか? 繰り返しを変更する唯一の方法は、例外コレクションを反復処理することです (名前は誤解を招きますが)。これは正しいです?
あなたが提供できる助けに深く感謝します、ありがとう!
注: aItem<>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