2012-02-07 8 views
1

すべての色カテゴリを削除しようとしています。ただし、次のコードでは、すべてのケースを削除するとは限りません。通常は2つまたは3つのままにします。どのようにすべてのカラーカテゴリを削除できますか?

いくつかのカテゴリをスキップする理由はありますか?

 
    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
+0

これを削除推測です。 Forステートメントを 'Do While theCategories.Count> 0'に置き換えてみてください。 –

+0

初心者の間違い、それを指摘してくれてありがとう。私はそれだけに変更しました( "Do While theCategories.Count> 0")、 "For i = 1 To 25:theCategories.Remove 1"(エラーもキャッチします)。しかしそれはまだカテゴリをスキップします。タイミングエラーのように見えるが、明らかにそうではない。可能な更新が必要ですか?アイデア?誰でも? – ForEachLoop

+0

私は理解しているように、Outlook 2007のためにNameSpace.Categories機能が追加されているので、あなたのコードはOutlook 2003で動作することができません。(セッションはNameSpaceです。)メールアイテムからカテゴリを削除していると仮定しましたカテゴリ自体を削除しているようです。これはあなたがやりたいことですか? –

答えて

0

この質問は少し古いですが、同じ答えを探しすることができる他の誰かのために...

は、tryの下に与える:私はやって管理

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 
0

をこれはルールを使用します。そのカテゴリがカテゴリに割り当てられている場合は、そのカテゴリを削除してから、受信トレイで実行したようなものです。興味があればコード化されていないソリューションです!

0

リバースループ

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 
関連する問題