我想更改Outlook 2010日历中所有项目的时区。
我很困惑一个人如何处理集合中的项目,因为它们在循环中被迭代。我的主要背景是Java,当我理解循环时,一个变量被用作一个虚拟变量,它将依次获取集合中所有项的值。这种FOR循环通常不需要特殊的赋值。您是否需要以某种方式手动推进变量以保持循环运行?
这是我的代码:
Public Sub TZFix()
Dim oAppointmentItem As Outlook.AppointmentItem
Dim tzs As Outlook.TimeZones
Dim tzCentral As Outlook.TimeZone
Dim oAppointments As Object
Dim oNS As Outlook.NameSpace
Set oNS = oOutlook.GetNamespace("MAPI")
Set oAppointments = oNS.GetDefaultFolder(olFolderCalendar)
Set tzs = Application.TimeZones
Set tzCentral = tzs("Central Standard Time")
For Each oAppointmentItem In oAppointments.Items
Set oAppointmentItem.StartTimeZone = tzCentral
Set oAppointmentItem.EndTimeZone = tzCentral
Next
End Sub
我认为循环中存在变量赋值问题,因为每当我运行它时都会出现Error 91: Object Variable or With block variable not set
错误。
答案 0 :(得分:0)
oOutlook
永远不会分配给Nothing
,因此Application
。您可能打算将其设置为Nothing
。
此外,最后将局部变量设置为{{1}}是多余的,删除它。
答案 1 :(得分:0)
我的剧本中也有这个问题。对我来说,解决方案是将宏安全设置设置为最低并再次运行它并且它有效。 也许它值得一试!