【问题标题】:How to remove a specific category on a selected mail in Outlook 2003 with Macro?如何使用宏在 Outlook 2003 中删除选定邮件上的特定类别?
【发布时间】:2011-02-21 22:25:42
【问题描述】:

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

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

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

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

-谁能给我看一个可以删除所选邮件并在删除前删除收件箱类别的宏?我会用这个宏替换默认的删除按钮。 (不太重要,因为在我的搜索文件夹中,我可以过滤物理上放置在“已删除邮件”文件夹中的邮件,但最好不要将邮件归类为垃圾箱中的收件箱。

非常感谢,

塞克利亚

【问题讨论】:

    标签: vba outlook categories


    【解决方案1】:

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

    但这应该对你有用

    添加保存!呵呵!

    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
    

    【讨论】:

    • 嗨 76mel,非常感谢!这几乎是完美的。 Sub UnAssignInboxCat() 按预期删除收件箱类别,但 Outlook 需要选择下一条消息以将其从当前视图中删除(搜索文件夹显示具有收件箱类别的邮件)。您能否添加一个命令来选择下一条消息,以便类别删除可能会导致从该搜索文件夹中消失? Sub DeleteAndUnAssignInboxCat() 删除消息,但不知何故没有删除类别。非常感谢,szekelya
    • 对不起我没有添加保存..现在有
    • 76mel,我无语了。这太棒了,非常感谢!我的 Outlook 2003 变成了一个现代、高效的可标记邮件客户端。非常感谢。塞克利亚
    • +1 但您可以通过在 Item.Categories 字符串(即“收件箱”)中查找类别名称和逗号并将其替换为空字符串来使用更少的代码来执行此操作。您的输入参数也是 Variant 类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2012-09-27
    相关资源
    最近更新 更多