我正在编写一个简单的脚本来删除“已删除邮件”文件夹中的所有日历对象。此类日历对象包括会议确认,拒绝......等。
目前我有以下,不删除任何内容,即使检查已删除的项目文件夹有多个日历确认,拒绝..等等:
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
答案 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