wow, one year later and the problem is still there... No solution yes, but some userful Tricks on categories for Outlook 2007 (sorry, just in german):
Kategorien schnell und einfach importieren oder exportieren, Teil 1Versionen: Outlook 2007
Kategorien gab es immer schon in Outlook. Neu in Outlook 2007 sind "Farbkategorien", mit denen die Zuordnungen noch leichter zu erkennen sind.
Was aber, wenn Sie in einer Arbeitsgruppe mit mehreren Outlook-Anwendern einheitliche (Farb-)Kategorien verwenden wollen? Wo speichert Outlook 2007 seine Kategorien? Lässt sich eine Kategorieliste zentral verwalten, um sie gezielt an verschiedene Outlook-Anwender zu verteilen? Antworten auf diese Fragen liefert der folgende Beitrag.
Bis Outlook 2003 wurden Kategorien in der Windows-Registrierungsdatenbank gespeichert. Sie konnten den entsprechenden Registry-Schlüssel exportieren und auf einem anderen PC wieder importieren, um eine vorgefertigte Kategorieliste an andere Outlook-Anwender weiterzugeben. Das ist in Outlook 2007 nicht mehr so. Die neuen Farbkategorien werden direkt in der persönlichen Datendatei bzw. dem persönlichen Exchange-Server-Konto gespeichert. Und leider besitzt das Dialogfenster, in dem Sie die Farbkategorien bearbeiten, keine Import- oder Exportschaltflächen.
Das bedeutet aber keineswegs, dass die zentrale Verwaltung von Kategorien in Outlook 2007 quasi unmöglich geworden ist. Ganz im Gegenteil: Seit Outlook 2007 können Sie direkt per VBA auf die Kategoriedefinitionen zugreifen. So brauchen Sie nur Makros zu schreiben, die Ihre Kategorien exportieren oder importieren.
Die in diesem Tipp vorgestellte Makrolösung arbeitet mit einer Textdatei, in die die Outlook-Farbkategorien exportiert bzw. aus der sie importiert werden. Neben den Kategorienamen enthält die Textdatei auch die zugehörigen Farbinformationen und Tastenbelegungen. Die Datei lässt sich dann über ein lokales Netzwerk oder über andere Speichermedien an die gewünschten Outlook-Anwender verteilen. Diese müssen nur noch das Importmakro einsetzen, um die Kategorien aus der Textdatei in die persönliche Outlook-Instanz zu integrieren.
Beginnen Sie mit dem Exportmakro - auch um einen Eindruck zu bekommen, wie die Textdatei mit den Kategoriedefinitionen aufgebaut sein muss, damit sie später vom Importmakro verarbeitet werden kann.
• Drücken Sie im Outlook-Fenster Alt + F11, um den Visual Basic-Editor zu starten.
• Wählen Sie darin den Befehl Einfügen-Modul an.
• In das neue Codefenster geben Sie folgende Prozedur ein:
Code: Select all
Sub ExportCategories()
Dim sFilePath As String
Dim iFileNumber As Integer
Dim oNameSpace As NameSpace
Dim oCategory As Category
Dim sCatName As String
Dim lCatColor As Long
Dim lCatShortcut As Long
On Error GoTo ExportCat_Error
Set oNameSpace = _
Application.GetNamespace("MAPI")
If oNameSpace.Categories.Count > 0 Then
sFilePath = "C:\Outlook\Kategorien.txt"
iFileNumber = FreeFile
Open sFilePath For Output As #iFileNumber
For Each oCategory In oNameSpace.Categories
With oCategory
sCatName = .Name
lCatColor = .Color
lCatShortcut = .ShortcutKey
End With
Write #iFileNumber, _
sCatName, lCatColor, lCatShortcut
Next oCategory
MsgBox _
Prompt:="Export abgeschlossen!", _
Title:="Kategorieexport"
Else
MsgBox _
Prompt:="Makro beendet!" & vbCr & _
"Keine Kategorien vorhanden...", _
Title:="Kategorieexport"
End If
ExportCat_End:
Close #iFileNumber
Set oCategory = Nothing
Set oNameSpace = Nothing
Exit Sub
ExportCat_Error:
MsgBox _
Prompt:="Fehler beim Kategorieexport!" & _
vbCr & _
"Fehlernr. " & Err.Number & ":" & vbCr & _
Err.Description, _
Buttons:=vbCritical, _
Title:="Kategorieexport"
Resume ExportCat_End
End Sub
• Ändern Sie am Anfang der Prozedur folgende Zeile
Code: Select all
sFilePath = "C:\Outlook\Kategorien.txt"
so dass sich die Pfadangabe auf eine gültige Datei bezieht. Der Ordner muss bereits existieren, während der eigentliche Dateiname frei wählbar ist (da das Ergebnis eine Textdatei ist, empfiehlt sich die Endung ".txt"). Gegebenenfalls erstellt das Makro die Datei in dem Ordner automatisch neu. Aber Vorsicht: Falls es bereits eine Datei dieses Namens gibt, wird der Inhalt überschrieben.
• Wählen Sie Datei-VbaProject.OTM speichern an.
• Verlassen Sie den Visual Basic-Editor per Datei-Schließen und zurück zu Microsoft Office Outlook.
Die vorhandenen Farbkategorien lassen sich jetzt in eine Textdatei exportieren, indem Sie im Outlook-Fenster Alt + F8 drücken und im Makrodialog per Doppelklick das Makro "ExportCategories" ausführen. Nach dem Export meldet sich das Makro mit dem Hinweis "Export abgeschlossen!".
Das Resultat können Sie in der Textdatei betrachten, deren Namen Sie in Schritt 4 der obigen Anleitung festgelegt haben. Die Datei enthält Zeilen, die so aufgebaut sind wie die folgenden:
"Telefonanrufe",0,0
"Consulting",5,0
"Blaue Kategorie",8,0
"Messen/Tagungen",4,0
Am Anfang jeder Zeile steht der Kategoriename in Anführungszeichen. Abgetrennt durch ein Komma folgt eine Zahl, die für einen Farbwert steht. Und abgetrennt durch ein weiteres Komma endet die Zeile mit einer zweiten Zahl, die einer in Outlook eingebauten Tastenkombination entspricht - von "0" für "kein Shortcut" über "1" für Strg + F2 bis "11" für Strg + F12.
Weitere Details erfahren Sie im zweiten Teil dieses Tipps, in dem es dann natürlich auch um das Importmakro geht.
Kategorien schnell und einfach importieren oder exportieren, Teil 2Versionen: Outlook 2007
Da die neuen Farbkategorien von Outlook 2007 nun auch über das VBA-Objektmodell zugänglich sind, haben Sie die Möglichkeit, eigene Import- und Exportmakros zu entwickeln, mit denen sich Kategorien schnell an andere Outlook-Anwender verteilen lassen. Das Exportmakro haben Sie im ersten Teil dieses Tipps kennen gelernt. Erfahren Sie nun mehr zu den programmiertechnischen Details und erstellen Sie schließlich das noch fehlende Importmakro.
Wie also gestaltet sich der Zugriff auf die Farbkategorien? Werfen Sie dazu einen Blick auf das Exportmakro aus dem ersten Teil. Dazu öffnen Sie in Outlook mit der Tastenkombination Alt + F8 das Dialogfenster Makros. Darin markieren Sie den Makronamen "ExportCategories" und anschließend klicken Sie auf die Schaltfläche Bearbeiten. Sie gelangen automatisch in den Visual Basic-Editor und befinden sich im Codefenster mit dem Exportmakro.
Farbkategorien ("Categories") sind programmiertechnisch eine Auflistung des "NameSpace"-Objekts. Deshalb erstellen Sie in dem Makro zuerst eine Objektvariable für den Standard-NameSpace von Outlook:
Code: Select all
Set oNameSpace = _
Application.GetNamespace("MAPI")
Schon in der nächsten Makrozeile setzen Sie dann das "Categories"-Objekt ein, um mittels "Count"-Eigenschaft die Anzahl verfügbarer Farbkategorien zu prüfen:
Code: Select all
If oNameSpace.Categories.Count > 0 Then
Die in Outlook definierten Kategorien durchlaufen Sie im weiteren Verlauf mit einer "For Each...Next"-Schleife:
Code: Select all
For Each oCategory In oNameSpace.Categories
Jede einzelne Kategorie ("oCategory" als Objektvariable vom Typ "Category") stellt wiederum bestimmte Eigenschaften zur Verfügung. Im vorliegenden Fall lesen Sie die Eigenschaften "Name" (Kategoriename), "Color" (der Code der zugewiesenen Farbe) sowie "ShortcutKey" (der Code der zugewiesenen Tastenkombination) aus.
Mit den üblichen VBA-Befehlen zum Schreiben von Daten in Dateien fügen Sie die ausgelesenen Informationen schließlich in eine Textdatei ein:
Code: Select all
Open sFilePath For Output As #iFileNumber
[…]
Write #iFileNumber, _
sCatName, lCatColor, lCatShortcut
[…]
Nun geht es noch darum, die Kategoriedefinitionen aus der Exportdatei wieder in Outlook zu integrieren. Das erledigt unser Importmakro, welches Sie im Visual Basic-Editor direkt unter dem Prozedurcode des Exportmakros einfügen können:
Code: Select all
Sub ImportCategories()
Dim sFilePath As String
Dim iFileNumber As Integer
Dim oNameSpace As NameSpace
Dim sCatName As String
Dim lCatColor As Long
Dim lCatShortcut As Long
On Error GoTo ImportCat_Error
Set oNameSpace = _
Application.GetNamespace("MAPI")
sFilePath = "C:\Outlook\Kategorien.txt"
iFileNumber = FreeFile
Open sFilePath For Input As #iFileNumber
Do While Not EOF(iFileNumber)
Input #iFileNumber, _
sCatName, lCatColor, lCatShortcut
oNameSpace.Categories.Add _
sCatName, lCatColor, lCatShortcut
Loop
MsgBox _
Prompt:="Import abgeschlossen!", _
Title:="Kategorieimport"
ImportCat_End:
Close #iFileNumber
Set oNameSpace = Nothing
Exit Sub
ImportCat_Error:
If Err.Number = -2147024809 Then
Select Case MsgBox( _
Prompt:=sCatName & String(2, vbCrLf) & _
"Die Kategorie ist bereits vorhanden." & _
vbCr & "Wollen Sie Farbe und " & _
"Tastenkombination aus " & _
"der Importdatei übernehmen?", _
Buttons:=vbQuestion + vbYesNoCancel + _
vbDefaultButton2, _
Title:="Kategorieimport")
Case vbNo
Resume Next
Case vbYes
With oNameSpace.Categories(sCatName)
.Color = lCatColor
.ShortcutKey = lCatShortcut
End With
Resume Next
Case vbCancel
Resume ImportCat_End
End Select
Else
MsgBox _
Prompt:="Fehler beim Kategorieimport!" & _
vbCr & _
"Fehlernr. " & Err.Number & ":" & vbCr & _
Err.Description, _
Buttons:=vbCritical, _
Title:="Kategorieimport"
Resume ImportCat_End
End If
End Sub
Passen Sie auch hier die Zeile
Code: Select all
sFilePath = "C:\Outlook\Kategorien.txt"
so an, dass sie auf eine gültige Datei verweist. Beim Importmakro müssen nicht nur der Pfad, sondern auch die Datei vorhanden sein. Es muss sich um eine Textdatei handeln, die Kategoriedefinitionen nach dem im ersten Teil vorgestellten Schema enthält. Am einfachsten ist es, Sie erstellen einmal mit unserem Exportmakro eine Datei mit den gewünschten Kategorien und setzen diese dann als Quelle der nachfolgenden Importvorgänge ein.
Aufgerufen wird das Importmakro wie gewohnt, indem Sie im Outlook-Fenster Alt + F8 drücken und dann doppelt auf den Makronamen "ImportCategories" klicken. Das Ende des Importvorgangs signalisiert das Makro mit der Meldung "Import abgeschlossen!".
Falls ein Kategoriename bereits vorhanden ist, werden Sie per Dialogfenster darauf hingewiesen. Sie haben die Möglichkeit, den Import dieser Kategorie zu überspringen - dazu klicken Sie auf die Schaltfläche Nein. Sie können aber auch die vorhandenen Farb- und Tastenzuweisungen ändern und durch die Zuweisungen aus der Importdatei ersetzen - dazu klicken Sie auf Ja. Oder wenn Sie keine weiteren Kategorien aus der Importdatei übernehmen wollen, klicken Sie auf Abbrechen, um den Importvorgang zu stoppen.
Programmiertechnisch gibt es kaum Neues im Vergleich mit dem Exportmakro. Neu ist nur das Hinzufügen von Farbkategorien, was Sie mit der "Add"-Methode des "Categories"-Objekt erreichen:
Code: Select all
oNameSpace.Categories.Add _
sCatName, lCatColor, lCatShortcut
Als Parameter übergeben Sie der Methode den Kategorienamen, den Farbcode und den Tastencode - Eigenschaften, die das Makro zuvor aus der Importdatei ausgelesen hat.