Как вы можете удалить все цветовые категории? - PullRequest
1 голос
/ 08 февраля 2012

Я пытаюсь удалить все цветовые категории.Однако следующий код не всегда удаляет все случаи, обычно оставляя два или три.

По какой-то причине некоторые категории пропускаются?

    Public Sub DeleteAllCategories()
        On Error GoTo MyErrorHandler

        'Assume gOutlookApp (as in Dim gOutlookApp As Outlook.Application) is valid
        Dim theCategories As Outlook.Categories
        Set theCategories = gOutlookApp.Session.Categories

        Dim i As Long
        For i = 1 To theCategories.Count
            theCategories.Remove 1
            DoEvents
        Next

        Exit Sub

    MyErrorHandler:
        MsgBox "DeleteAllCategories" & vbCrLf & vbCrLf & "Err = " & Err.Number & vbCrLf & "Description: " & Err.Description
    End Sub

Ответы [ 3 ]

0 голосов
/ 19 января 2016

Мне удалось сделать это с помощью правила. Что-то вроде того, если его присвоили какой-либо категории, затем удалили категорию, а затем я запустил ее в своем почтовом ящике. Не закодированное решение, если это вас интересует!

0 голосов
/ 21 января 2018

Обратный цикл при удалении

Option Explicit
Public Sub DeleteAllCategories()
    Dim theCategories As Outlook.Categories
    Set theCategories = Application.Session.Categories

    Dim i As Long
    For i = theCategories.Count To 1 Step -1
        DoEvents
        Debug.Print theCategories(i)
'       Remove i
    Next
End Sub
0 голосов
/ 19 декабря 2014

Этот вопрос немного стар, но для кого-то, кто может искать тот же ответ ...

Попробуйте нижеприведенную попытку:

Public Sub DeleteAllCategories()
    'Assume gOutlookApp (as in Dim gOutlookApp As Outlook.Application) is valid
    Dim objCategory As Outlook.Category   'Changed from Outlook.Categories
    Dim strCAT As String
    On Error GoTo MyErrorHandler

    For Each objCategory In Session.Categories 'Removed the gOutlookApp
        strCAT = objCategory
        Debug.Print strCAT;
        Session.Categories.Remove (strCAT)
        Debug.Print " - Deleted: " & CBool(Session.Categories.Item(strCAT) Is Nothing)
    Next

    Exit Sub

MyErrorHandler:
    MsgBox "DeleteAllCategories" & vbCrLf & vbCrLf & "Err = " & Err.Number & vbCrLf & "Description: " & Err.Description
End Sub
...