我在Outlook中有以下宏来清除我删除的文件夹。它奇怪,因为它似乎没有删除所有条目。我必须运行这几次才能清除已删除的项目文件夹。 (通常2或3次)。每次文件夹中删除的项目数量确实减少但我不明白为什么一切都不会在第一次被删除。
这是我的代码;怎么了?
Public Sub EmptyDeletedEmailFolder()
Dim outApp As Outlook.Application
Dim deletedFolder As Outlook.MAPIFolder
Dim item As Object
Dim entryID As String
Set outApp = CreateObject("outlook.application")
Set deletedFolder = outApp.GetNamespace("MAPI").GetDefaultFolder(olFolderDeletedItems)
For Each item In deletedFolder.Items
item.Delete ' Delete from mail folder
Next
Set item = Nothing
Set deletedFolder = Nothing
Set outApp = Nothing
End Sub
答案 0 :(得分:6)
尝试:
For i = deletedFolder.Items.Count To 1 Step -1
deletedFolder.Items(i).Delete '' Delete from mail folder
Next
从集合中删除项目可能会出现问题。
答案 1 :(得分:1)
通过删除迭代器“下面”集合中的对象,它无法真正覆盖集合中的每个项目,因为集合正在发生变化。 Remou想出了一个非常好的方法,只要有剩余的项目,就可以保证连续删除集合中的项目。只是不要在方法运行时自己删除项目,否则你可能遇到问题。