【问题标题】:How to delete appointments?如何删除约会?
【发布时间】:2014-10-06 14:50:40
【问题描述】:

我的代码应该循环遍历所有未来的约会;如果它们符合特定条件,则将它们从日历中删除。

Sub DeleteFutureImportedCalendarItems()
    Dim objOutlook As Outlook.Application
    Dim objNamespace As Outlook.NameSpace
    Dim objFolder As Outlook.MAPIFolder
    Dim objAppointment As Outlook.AppointmentItem

    Dim strSubject As String
    Dim strLocation As String
    Dim dteStartDate As Date
    Dim Category As String
     
    '******************************** Set Criteria for DELETION here ********************************
    strSubject = "[Imported]"
    strLocation = "AC"
    dteStartDate = Date
    Category = "Yellow Category"
    '************************************************************************************************
     
    Set objOutlook = Outlook.Application
    Set objNamespace = objOutlook.GetNamespace("MAPI")
    Set objFolder = objNamespace.GetDefaultFolder(olFolderCalendar)
     
    For Each objAppointment In objFolder.Items
    
      If Right(objAppointment.Subject, 10) = strSubject And objAppointment.Location = strLocation And _
         objAppointment.Start >= dteStartDate And objAppointment.Categories = Category  Then
           objAppointment.Delete
          
      End If
    Next

End Sub

这不会删除所有符合条件的约会。如果我多次运行代码,每次都会抓取更多,但我必须运行 5 或 6 次才能获得所有这些。

【问题讨论】:

    标签: vba foreach outlook


    【解决方案1】:

    删除项目会更改集合。而是从 Count down 循环到 1:

    set oItems = objFolder.Items
    for i = oItems.Count to 1 step -1 do
      set objAppointment = oItems.Item(I)
      ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      相关资源
      最近更新 更多