如何使用VBA删除Outlook中的收藏夹文件夹

时间:2015-06-23 11:56:24

标签: vba outlook-2007

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

设置对象工作正常

' 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行(失败并出现错误“错误的参数数量或无效的属性赋值)之外 - 显然我只想要一条删除行,但两者都显示我尝试过的选项。” / p>

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

1 个答案:

答案 0 :(得分:1)

您必须使用Remove集合的NavigationFolders方法。它需要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方法的原因。