outlook宏 - 为什么不删除已删除文件夹中的所有项目?

时间:2009-11-23 11:15:46

标签: vba outlook

我在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

2 个答案:

答案 0 :(得分:6)

尝试:

For i = deletedFolder.Items.Count To 1 Step -1
    deletedFolder.Items(i).Delete             '' Delete from mail folder
Next

从集合中删除项目可能会出现问题。

答案 1 :(得分:1)

通过删除迭代器“下面”集合中的对象,它无法真正覆盖集合中的每个项目,因为集合正在发生变化。 Remou想出了一个非常好的方法,只要有剩余的项目,就可以保证连续删除集合中的项目。只是不要在方法运行时自己删除项目,否则你可能遇到问题。