Как установить цвет вращающейся категории для входящих сообщений? - PullRequest
0 голосов
/ 10 декабря 2010

Наша служба поддержки клиентов получает электронные письма в папке входящих сообщений группы.Они хотели бы назначить категорию / цвет для каждого входящего электронного письма, чтобы они могли лучше разделять запросы клиентов.

Поскольку в команде три человека, я создал три категории с уникальным связанным цветом.Они хотят, чтобы цвет последовательно вращался в цикле (то есть 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

Ответы [ 2 ]

0 голосов
/ 17 декабря 2010

Я добавил кнопку на панель инструментов, которая запускает форму пользователя, которая собирает имена сотрудников, которые могут получать электронные письма. Эти имена - мои категории названы одинаково - и общее количество сотрудников являются общедоступными. Эти две процедуры вызываются из одной и той же основной процедуры, которая заполняет форму пользователя.

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
0 голосов
/ 10 декабря 2010

У вас уже есть MailItem (myMail) - что произойдет, если вы используете его напрямую, а не пытаетесь получить новый? OOM - переменчивый зверь - не пытайтесь обойти его модель кеширования. Возможно, вы также захотите узнать, не можете ли вы установить что-то другое, например, тему, чтобы увидеть, выполняется ли код в ожидаемых частях и может ли выполнить обновление.

Кроме того, тип Categories является строкой, а olCategoryColorBlue (из перечисления OlCategoryColor) является числом. Хм. Не уверен, как это работает. Я считаю, что вы должны преобразовать значение перечисления в «имя». См. Ссылки в интерфейсе категорий , которые можно проиндексировать с помощью индекса (OlCategoryColor?) Или выполнить линейный поиск.

Кроме того, я полагаю, что вы можете сделать это только с помощью Мастера правил (без VBA).

Надеюсь, вы найдете свою проблему. Удачного кодирования.

...