自动删除已删除文件夹中的所有Outlook日历项目

时间:2016-01-20 15:59:40

标签: vba calendar outlook outlook-vba

我正在编写一个简单的脚本来删除“已删除邮件”文件夹中的所有日历对象。此类日历对象包括会议确认,拒绝......等。

目前我有以下,不删除任何内容,即使检查已删除的项目文件夹有多个日历确认,拒绝..等等:

    Dim oDeletedItems As Outlook.Folder
    Dim obj As Outlook.MailItem

    Dim i As Integer

    'Obtain a reference to deleted items folder
    Set oDeletedItems = Application.Session.GetDefaultFolder(olFolderDeletedItems)
    For i = oDeletedItems.Items.Count - 1 To 1 Step -1
    ' Delete all appointment items
     If oDeletedItems.Items(i).Class = AppointmentItem Then

         'Debug.Print obj.Subject
          oDeletedItems.Items.Item(i).Delete

     End If
    Next

1 个答案:

答案 0 :(得分:1)

首先,不要使用多点符号(oDeletedItems.Items(i).Class) - 在进入循环之前缓存Items集合。

其次,确认,拒绝等是会议项目,而不是约会。

第三,Class属性返回OlObjectClass枚举值之一。 AppointmentItem是项类型(接口)。

您需要使用53 (olMeetingRequest)或26 (olAppointment)

第四,从Items.Count开始循环,而不是Items.Count-1

set items = oDeletedItems.Items
For i = items.Count To 1 Step -1
    ' Delete all appointment items
     set item = items.Item(I) 
     itemClass = item.Class
     If (itemClass= olAppointment) or (itemClass= olMeetingRequest) Then
          'Debug.Print obj.Subject
          item.Delete
     End If
    Next