如何在带有Macro的Outlook 2003中删除所选邮件上的特定类别?

sze*_*lya 1 outlook vba categories outlook-vba

我正在尝试将我的Outlook2003转换为最接近gmail的东西。

我开始使用类别,与gmail中的标签非常相似。我可以使用规则自动分配类别,也可以手动添加类别。我还创建了“搜索文件夹”,以显示具有给定类别的所有邮件(如果它们不在“已删除邮件”或“已发送邮件”文件夹中)。这部分几乎类似于gmail中的“标签”视图。

基本上缺少两件事,应该使用我完全没有经验的宏(准确地说是VBA)来完成。因此,我的问题是:

-有人可以向我显示一个宏来删除“收件箱”类别吗? 这就像gmail中的“存档”按钮一样。实际上,我想将此宏分配给工具栏按钮,并将其命名为Archive。我有一个将收件箱类别添加到所有传入邮件的规则。正如我所说,我有一个搜索文件夹,显示所有归类为“收件箱”的邮件,还有一个“所有邮件”搜索文件夹,该文件夹显示所有邮件,无论它们是否具有“收件箱”类别。与gmail一样,只是缺少简单的归档。

-有人可以向我显示一个宏,该宏将删除选定的邮件,并在删除前删除收件箱类别吗?我将用此宏替换默认的删除按钮。(有些不那么重要,例如,在我的搜索文件夹中,我可以过滤实际放置在“已删除邮件”文件夹中的邮件,但是如果不将邮件归类为“垃圾箱”中的收件箱,那会更加优雅。

提前谢谢了,

塞克利亚

76m*_*mel 5

我已使用Sue的http://www.outlookcode.com/codedetail.aspx?id=1211删除代码

但这应该可以工作

添加了保存!h!

Sub UnAssignInboxCat()
Dim SelectedItems As Selection
Dim Item As MailItem


Set SelectedItems = Application.ActiveExplorer.Selection

For Each Item In SelectedItems

RemoveCat Item, "Inbox"
Item.Save
Next

Set SelectedItems = Nothing
Set Item = Nothing

End Sub
Sub DeleteAndUnAssignInboxCat()
Dim SelectedItems As Selection
Dim Item As MailItem
Set SelectedItems = Application.ActiveExplorer.Selection

For i = SelectedItems.Count To 1 Step -1
    Set Item = SelectedItems.Item(i)
    RemoveCat Item, "Inbox"
    Item.Save

    Item.Delete
Next

Set SelectedItems = Nothing
Set Item = Nothing

End Sub




Sub RemoveCat(itm, catName)
    arr = Split(itm.Categories, ",")
    If UBound(arr) >= 0 Then
        ' item has categories
        For i = 0 To UBound(arr)
            If Trim(arr(i)) = catName Then
                ' category already exists on item
                ' remove it
                arr(i) = ""
                'rebuild category list from array
                itm.Categories = Join(arr, ",")
                Exit Sub
            End If
        Next
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)