我正在嘗試編寫一個規則,將類別應用於所有傳入郵件。Outlook VBA腳本標記帶有類別的電子郵件正在創建重複的類別
最終我想用「Programming-C」和「Programming-C++」標籤來標記C和C++相關的電子郵件,但我簡化了SO的例子。
我也希望能夠對已具有指定類別的郵件運行此規則,但我不希望它對已標記的電子郵件加標籤。
這裏是添加類別,而無需創建一個重複的子程序:
' 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
這filter
子程序從規則調用,並適用到所有收到的郵件。 問題是,如果我在「收件箱中的所有項目」上運行此規則,並且電子郵件已被標記爲「編程-C」和「編程 - C++」,它會添加重複標記,即使我正在檢查重複項!
(它會重複無論是「編程 - C」或「編程 - C++」的標籤,而不是兩者哪一個複製似乎是隨機的,並且是完全不符......)
我一直在撓撓我的頭腦,試圖找出這一天。
如何正確檢查現有標籤以避免重複?
編輯
我注意到,當電子郵件已經被標記有兩個「編程 - C」和「編程 - C++」這兩個標籤的順序似乎有一個影響。當我運行腳本時,它總是會複製第二個標記,而不是第一個標記。所以如果「Programming-C」是第一個標籤,它將複製「Programming-C++」,反之亦然。