您的代码的第一个问题是您使用的循环不合适。如果要删除(VBA 中的几乎所有内容),则需要将集合从最后一个元素循环到第一个元素。如果不是,则更改集合的顺序-删除第一个元素>>第二个元素移动到第一个位置并且不会被删除。
因此,此代码应删除您的所有项目DeltetedItems folder
:
Sub Delete_all_from_dust_bin()
Dim myFolder As Outlook.Folder
Set myFolder = Application.GetNamespace("MAPI"). _
GetDefaultFolder(olFolderDeletedItems)
Dim i As Long
For i = myFolder.items.Count To 1 Step -1
myFolder.items(i).Delete
Next i
End Sub
显然,您可以准备类似的代码以从任何其他文件夹中删除。您将运行两个删除循环以确保删除项目。
MailItem.Delete Method
来自 MSDN的一些补充说明:
Delete 方法删除集合中的单个项目。要删除文件夹的 Items 集合中的所有项目,您必须从文件夹中的最后一个项目开始删除每个项目。例如,在一个文件夹的项目集合AllItems中,如果文件夹中有n个项目,则从AllItems.Item(n)处开始删除该项目,每次递减索引,直到删除AllItems.Item(1) .
由于OP的一些评论而进行编辑。
即使您需要删除一些项目(不是全部),请记住使用我上面介绍的循环类型。如果您需要参考DeletedItems folder
其他商店中的任何其他内容,您可以通过以下方式找到此文件夹:
'with index reference
Application.GetNamespace("MAPI").Stores(2).getdefaultfolder(olFolderDeletedItems)
'with name reference
Application.GetNamespace("MAPI").Stores("Business Mail").getdefaultfolder(olFolderDeletedItems)
我不知道这是否适用于所有 Outlook 版本,但它适用于 Outlook 2010。