如何使用 VBA 删除 outlook 中的收藏夹

How do you delete favorite folders in outlook using VBA

我想从outlook收藏夹中删除所有文件夹然后替换它们,但是删除似乎不起作用。我的代码有什么问题。

设置 Objects 工作正常

' Get the "Favorite Folders" navigation group
Set favGroup = Application.ActiveExplorer.NavigationPane.Modules.GetNavigationModule(olModuleMail).NavigationGroups.GetDefaultNavigationGroup(olFavoriteFoldersGroup)

这个有效

Set inboxFldr = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
favGroup.NavigationFolders.Add (inboxFldr)

除 .delete 行外所有这些都有效(失败并出现错误“参数数量错误或 属性 赋值无效)- 显然我只想要一个删除行,但将两者都放入以显示选项我试过了。

Debug.Print favGroup.NavigationFolders.count
Set oFolder = Application.ActiveExplorer.CurrentFolder
While favGroup.NavigationFolders.count > 0
    favGroup(1).Delete
    favGroup.NavigationFolders(1).Delete
Wend

您必须使用 NavigationFolders collection 的 Remove 方法。它以 NavigationFolder 作为参数。没有删除方法。

Sub RemoveAllFavorites()

    Dim favGroup As NavigationGroup
    Dim favFldrs As NavigationFolders

    Set favGroup = Application.ActiveExplorer.NavigationPane.Modules.GetNavigationModule(olModuleMail).NavigationGroups.GetDefaultNavigationGroup(olFavoriteFoldersGroup)
    Set favFldrs = favGroup.NavigationFolders

    Do While favFldrs.Count > 0
        favFldrs.Remove favFldrs.Item(1)
    Loop

End Sub

我想是这样的,因为你并没有真正删除任何东西。例如,收件箱不会因为您将其从收藏夹中删除而被删除。这一定是他们使用 Collection.Remove(Collection.Item) 方法而不是 Collection.Item.Delete 方法的原因。