2010-12-09 2 views
0

고객 지원팀은 그룹받은 편지함에서 이메일을받습니다. 각 수신 전자 메일에 범주/색을 지정하여 클라이언트 요청을보다 효과적으로 나눌 수 있습니다.수신 메시지에 순환 카테고리 색을 어떻게 설정합니까?

팀원이 3 명이므로 관련 색이 고유 한 3 개의 카테고리를 만들었습니다. 그들은 순차적으로 색상을 순환시키기를 원합니다 (즉, 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)이 있습니다. 새로운 것을 가져 오는 대신 직접 사용하면 어떻게됩니까? OOM은 변덕스러운 짐승입니다. 캐싱 모델을 피하려고하지 마십시오. 주제와 같이 다른 부분을 설정하여 코드가 예상되는 부분으로 실행되는지 확인하고 업데이트를 수행 할 수 있는지 여부를 확인할 수도 있습니다.

또한 Categories 유형은 문자열이지만 olCategoryColorBlue (OlCategoryColor 열거 형에서)는 숫자입니다. 흠. 어떻게 작동하는지 잘 모르겠습니다. 열거 형 값을 "이름"으로 변환해야한다고 생각합니다. Categories Interface의 링크를 참조하십시오.이 링크는 색인 (OlCategoryColor?)을 통해 색인화하거나 선형 검색 할 수 있습니다.

또한 규칙 마법사 (VBA 없음)를 사용하여이 작업을 수행 할 수 있다고 생각합니다.

희망 사항을 찾으십시오. 행복한 코딩.

+0

내가 관심있는 사람을 위해 해결책을 게시 할 것이라고 생각했습니다. 나는 실험을 계속하고 결국 그것을 작동시켰다. –

+0

Public Sub ReadAssignEmails (outlook.mailitem으로 항목) –

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