Print a list of Outlook Categories and their Colors

Last reviewed on December 30, 2013

Having a list of categories names and their colors can be helpful when sharing categories with other users, since the color is per-user. Fortunately, MSDN published a sample macro that prints a list of categories and the name of the color assigned. Unfortunately, some of the color names in their macro are not valid. Below is the code from Category.Color Property (Outlook), with the corrected olCategoryColor names.

This macro can display a message box with a list of the category names and colors or print it to the VBA Editor's Immediate window.

To create a list of categories, including their colors and assigned shortcuts that can be restored or merged with the categories in a new profile, see Create a list of color categories and merge or restore the list using VBA.

Use MsgBox strOutput to display a message box or Debug.Print strOutput to print a list to the Immediate window (View > Immediate window or Ctrl+G). You can copy the list from the Immediate window or the MsgBox.

The printout and message box will look like the following:
Create a list of your categories and their assigned colorsUtility: Purple
Bookkeeping: Unknown
Business: Peach
Important: Dark Yellow
Test: Purple
Blue Category: Blue
Federal Holidays: Green
Needs Done: Dark Green
Old Projects that need finished: Dark Olive
Send Message: Yellow
Slipstick: Olive
Follow up soon: Dark Orange

The message box is copyable - click in the text and press Ctrl+C to copy it.

List Category Colors Macro

To use, Open the VBA editor using Alt+F11, right click on the Project folder and choose Insert > Module. Paste this code into the module then click the Run button or press F8. Press Ctrl+G to see the list of category names and colors in the immediate window. Comment out the MsgBox line to use only the Immediate window.

Public Sub ListCategoryNamesandColors()
 Dim objNameSpace As NameSpace
 Dim objCategory As Category
 Dim strOutput As String
 Set objNameSpace = Application.GetNamespace("MAPI")
 If objNameSpace.Categories.Count > 0 Then
 For Each objCategory In objNameSpace.Categories
 strOutput = strOutput & objCategory.Name

 Select Case objCategory.Color
 Case OlCategoryColor.olCategoryColorNone
 strOutput = strOutput & ": No color (white)" & vbCrLf
 Case OlCategoryColor.olCategoryColorBlack
 strOutput = strOutput & ": Black " & vbCrLf
 Case OlCategoryColor.olCategoryColorBlue
 strOutput = strOutput & ": Blue" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkBlue
 strOutput = strOutput & ": Dark Blue" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkGreen
 strOutput = strOutput & ": Dark Green" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkMaroon
 strOutput = strOutput & ": Dark Maroon" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkOlive
 strOutput = strOutput & ": Dark Olive" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkOrange
 strOutput = strOutput & ": Dark Orange" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkPeach
 strOutput = strOutput & ": Dark Peach" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkPurple
 strOutput = strOutput & ": Dark Purple" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkRed
 strOutput = strOutput & ": Dark Red" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkSteel
 strOutput = strOutput & ": Dark Steel" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkTeal
 strOutput = strOutput & ": Dark Teal" & vbCrLf
 Case OlCategoryColor.olCategoryColorDarkYellow
 strOutput = strOutput & ": Dark Yellow" & vbCrLf
 Case OlCategoryColor.olCategoryColorGray
 strOutput = strOutput & ": Gray" & vbCrLf
 Case OlCategoryColor.olCategoryColorGreen
 strOutput = strOutput & ": Green" & vbCrLf
 Case OlCategoryColor.olCategoryColorMaroon
 strOutput = strOutput & ": Maroon" & vbCrLf
 Case OlCategoryColor.olCategoryColorOlive
 strOutput = strOutput & ": Olive" & vbCrLf
 Case OlCategoryColor.olCategoryColorOrange
 strOutput = strOutput & ": Orange" & vbCrLf
 Case OlCategoryColor.olCategoryColorPeach
 strOutput = strOutput & ": Peach" & vbCrLf
 Case OlCategoryColor.olCategoryColorPurple
 strOutput = strOutput & ": Purple" & vbCrLf
 Case OlCategoryColor.olCategoryColorRed
 strOutput = strOutput & ": Red" & vbCrLf
 Case OlCategoryColor.olCategoryColorSteel
 strOutput = strOutput & ": Steel" & vbCrLf
 Case OlCategoryColor.olCategoryColorTeal
 strOutput = strOutput & ": Teal" & vbCrLf
 Case OlCategoryColor.olCategoryColorYellow
 strOutput = strOutput & ": Yellow" & vbCrLf

 Case Else
 strOutput = strOutput & ": Unknown" & vbCrLf
 End Select
 End If
 ' Display the output string in a msgbox 
 ' or in the immediate window
  MsgBox strOutput
  Debug.Print strOutput
 Set objCategory = Nothing
 Set objNameSpace = Nothing
End Sub

To include the Color Category index number in the listing (useful in other macros), add objCategory.Color to each line, as shown in the sample below. The results will include the index number at the end of the results line: Edit Websites: Dark Steel 12

strOutput = strOutput & ": Dark Steel " & objCategory.Color & vbCrLf

Written by

Diane Poremsky
A Microsoft Outlook Most Valuable Professional (MVP) since 1999, Diane is the author of several books, including Outlook 2013 Absolute Beginners Book. She also created video training CDs and online training classes for Microsoft Outlook. You can find her helping people online in Outlook Forums as well as in the Microsoft Answers and TechNet forums.

If the Post Coment button disappears, press your Tab key.