Как удалить определенную категорию на выбранной почте в Outlook 2003 с помощью макроса? - PullRequest
1 голос
/ 20 мая 2010

Я пытаюсь превратить свой Outlook2003 в ближайшую вещь к gmail.

Я начал использовать категории, которые очень похожи на ярлыки в gmail. Я могу назначать категории автоматически с помощью правил, и я могу добавлять категории вручную. Я также создал «папки поиска», которые показывают все письма с данной категорией, если они не находятся в папках «Удаленные» или «Отправленные». Эта часть почти похожа на ярлык в Gmail.

В принципе отсутствуют две вещи, которые следует делать с помощью макросов (точнее, VBA), с которыми я совершенно неопытен. Поэтому отсюда и мои вопросы:

-Может кто-нибудь показать мне макрос для удаления категории "Входящие"? Это будет действовать точно так же, как кнопка Архив в gmail. На самом деле я хочу назначить этот макрос кнопке панели инструментов и назвать ее «Архив». У меня есть правило, которое добавляет категорию «Входящие» ко всей входящей почте. Как я уже сказал, у меня есть папка поиска, в которой отображаются все сообщения, отнесенные к категории «Входящие», а также папка поиска «Вся почта», в которой отображаются все сообщения независимо от того, есть ли у них категория «Входящие». Точно так же, как в gmail, отсутствует простое архивирование.

-Может кто-нибудь показать мне макрос, который удалит выбранные письма / письма, а также удалит категорию «Входящие» перед удалением? Я бы заменил кнопку удаления по умолчанию на этот макрос. (Несколько менее важно, так как в моих папках поиска я могу фильтровать сообщения, которые физически помещаются в папку «Удаленные», но было бы более элегантно, если бы письма не относились к категории «Входящие» в корзине.

Большое спасибо заранее,

szekelya

1 Ответ

5 голосов
/ 20 мая 2010

Я использовал код удаления Сью из http://www.outlookcode.com/codedetail.aspx?id=1211

Но это должно сработать у вас

Добавлено сохранение! Doh!

Sub UnAssignInboxCat()
Dim SelectedItems As Selection
Dim Item As MailItem


Set SelectedItems = Application.ActiveExplorer.Selection

For Each Item In SelectedItems

RemoveCat Item, "Inbox"
Item.Save
Next

Set SelectedItems = Nothing
Set Item = Nothing

End Sub
Sub DeleteAndUnAssignInboxCat()
Dim SelectedItems As Selection
Dim Item As MailItem
Set SelectedItems = Application.ActiveExplorer.Selection

For i = SelectedItems.Count To 1 Step -1
    Set Item = SelectedItems.Item(i)
    RemoveCat Item, "Inbox"
    Item.Save

    Item.Delete
Next

Set SelectedItems = Nothing
Set Item = Nothing

End Sub




Sub RemoveCat(itm, catName)
    arr = Split(itm.Categories, ",")
    If UBound(arr) >= 0 Then
        ' item has categories
        For i = 0 To UBound(arr)
            If Trim(arr(i)) = catName Then
                ' category already exists on item
                ' remove it
                arr(i) = ""
                'rebuild category list from array
                itm.Categories = Join(arr, ",")
                Exit Sub
            End If
        Next
    End If
End Sub
...