2010-12-09 59 views
0

我們的客戶支持團隊通過收件箱收到電子郵件。他們希望爲每封收到的電子郵件分配一個類別/顏色,以便他們更好地分配客戶請求。如何在傳入消息上設置旋轉類別顏色?

由於團隊中有三個人,我創建了三個具有唯一關聯顏色的類別。他們希望顏色在循環中順序旋轉(即Person1獲取mailItem1類別紅色,Person2獲取mailItem2類別橙色,Person3獲取mailItem3類別黃色,Person1獲取mailItem4類別紅色等)。

我設置了一條規則運行在收到的郵件和拼湊在一起的腳本從我可以在網上找到有關Outlook mailItem屬性,但它沒有分配一個單一的顏色收件箱項目。

Sub AssignUserColor(myMail As MailItem) 
    Dim strID As String 
    Dim objMail As Outlook.MailItem 

    strID = myMail.EntryID 
    Set objMail = Application.Session.GetItemFromID(strID) 
    'myMail.Category.Color = olCategoryColorBlue 
    myMail.Categories = olCategoryColorBlue 
    objMail.Save 

    Set objMail = Nothing 
End Sub 

回答

0

您已經擁有MailItem(myMail) - 如果您直接使用它而不是嘗試獲取新的MailItem,會發生什麼? OOM是一個善變的野獸 - 不要試圖繞過它的緩存模式。您可能還想了解,如果您不能設置其他內容(如主題),以查看代碼是否運行到預期的部分並可以執行更新。

此外,Categories的類型是一個字符串,但olCategoryColorBlue(來自OlCategoryColor枚舉)是一個數字。嗯。不知道這是如何工作的。我相信你必須將枚舉值轉換爲「名稱」。請參閱Categories Interface上的鏈接,這些鏈接可以通過索引(OlCategoryColor?)或線性搜索進行索引。

另外,我相信你可以用規則嚮導(沒有VBA)做到這一點。

希望你找到你的問題。快樂的編碼。

+0

想到我會爲任何感興趣的人發佈解決方案。我不斷嘗試並最終將其運用到工作中。 – 2010-12-17 15:59:17

0

我在工具欄中添加了一個按鈕,該按鈕啓動一個用戶表單,用於收集哪些員工可用於接收電子郵件的名稱。這些名稱 - 我的類別同樣命名 - 員工總數在範圍內公開。這兩個過程是從填充用戶表單的相同主過程調用的。

Public sumOfAvailableEmps As Integer 
Dim empArray(4) As String 

Private Sub CheckAvailableUsers() 

Dim x As Integer 
Dim emp1 As Boolean, emp2 As Boolean, _ 
     emp3 As Boolean, emp4 As Boolean  'has emp already been 
                'added to array of available 
                'users? 
'initialize whether emp has been counted yet 
emp1 = False 
emp2 = False 
emp3 = False 
emp4 = False 

    For x = 0 To 3 
     If UserForm1.emp1 = True And ajCount = False Then 
      empArray(x) = "Emp1 Items" 
      ajCount = True 
     ElseIf UserForm1.emp2 = True And bsCount = False Then 
      empArray(x) = "Emp2 Items" 
      bsCount = True 
     ElseIf UserForm1.emp3 = True And kwCount = False Then 
      empArray(x) = "Emp3 Items" 
      kwCount = True 
     ElseIf UserForm1.emp4 = True And paCount = False Then 
      empArray(x) = "Emp4 Items" 
      paCount = True 
     Else 
      empArray(x) = "" 
     End If 
    Next x 

End Sub 

Private Sub AssignColorCategory() 

Dim myOlNameSpace As NameSpace 
Dim objFolder As Folder 
Dim myItems As items 
Dim itemCount As Long 

Set myOlNameSpace = Outlook.Application.GetNamespace("MAPI") 
Set objFolder = myOlNameSpace.GetDefaultFolder(6) 
Set myItems = objFolder.items 


itemCount = myItems.Count 

    For Each item In myItems 
     If TypeOf item Is Outlook.MailItem Then 
      Select Case itemCount Mod sumOfAvailableEmps 
       Case 0 
        item.Categories = empArray(0) 
       Case 1 
        item.Categories = empArray(1) 
       Case 2 
        item.Categories = empArray(2) 
       Case 3 
        item.Categories = empArray(3) 
       Case Else 
        item.Categories = empArray(0) 
      End Select 
      'without save method, the color change won't display on-screen 
      item.Save 
     End If 
    Next 


'release memory 
Set myItems = Nothing 
Set objFolder = Nothing 
Set myOlNameSpace = Nothing 
相關問題