对于每个迭代Outlook日历项列表

时间:2012-06-29 18:29:08

标签: vba timezone runtime outlook-2010

我想更改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错误。

2 个答案:

答案 0 :(得分:0)

oOutlook永远不会分配给Nothing,因此Application。您可能打算将其设置为Nothing

此外,最后将局部变量设置为{{1}}是多余的,删除它。

答案 1 :(得分:0)

我的剧本中也有这个问题。对我来说,解决方案是将宏安全设置设置为最低并再次运行它并且它有效。 也许它值得一试!