【问题标题】:Tagging emails with categories without creating duplicate categories使用类别标记电子邮件而不创建重复的类别
【发布时间】:2020-09-04 09:24:22
【问题描述】:

我正在尝试编写一个将类别应用于所有传入邮件的规则。

最终我想用它来标记带有“编程 - C”和“编程 - C++”标签的 C 和 C++ 相关电子邮件,但我简化了示例。

我还想对已具有指定类别的邮件运行此规则,但我不希望它双重标记已标记的电子邮件。

这是添加类别而不创建副本的子例程:

' Add a category but don't create duplicates
Sub AddCategory(ByRef Item As MailItem, strCategory As String)
    Dim exists As Boolean
    Dim arrCategories As Variant
    
    ' Initialize variables
    exists = False
    arrCategories = Split(Item.categories, ",")
    
    ' Loop through all categories
    For i = LBound(arrCategories) To UBound(arrCategories)
    
        ' Check if the specified category already exists
        If StrComp(strCategory, arrCategories(i)) = 0 Then
            exists = True
            Exit For
        End If
    Next i

    ' If the category does not exist, add it
    If Not exists Then
        Item.categories = Item.categories & "," & strCategory
    End If
End Sub

调用它的子程序:

Sub filter(Item As MailItem)
    Call AddCategory(Item, "Programming - C")
    Call AddCategory(Item, "Programming - C++")
    Item.Save
End Sub

此过滤器子例程从规则中调用并适用于所有传入邮件。

如果我在“收件箱中的所有项目”上运行此规则,并且一封电子邮件已被标记为“编程 -C”和“编程 - C++”,它将复制第二个标签。

因此,如果“Programming - C”是第一个标签,它将重复“Programming - C++”,反之亦然。

如何检查现有标签以避免重复?

【问题讨论】:

    标签: vba outlook categories


    【解决方案1】:

    在弄清楚如何逐行使用 VBA 调试器后,我最终发现了问题...

    原来Item.Categories 将类别作为字符串返回,格式如下:

    “Category1、Category2、...”

    每个类别用逗号和空格分隔。

    解决办法是换行:

    arrCategories = Split(Item.categories, ",")

    arrCategories = Split(Item.categories, ", ")

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      相关资源
      最近更新 更多