VBA: Mit einem Klick: Kategorie ersetzen im Termin
Ich arbeite mit verschiedenen Bildungsanbietern zusammen und immer wieder kommt es vor, dass die mir Termine schicken mit der Bitte, diese frei zuhalten. In meinem Kalender trage ich diese Termine mit einer Kategorie Namens "Schulungsanfrage / Planung" ein. Sehr oft kommt dann einer dieser Termine auch zustande und ich muss die Kategorie von der "Planung" zur "Schulung" wechseln. Normalerweise muss nun mit der Maus auf die Kategorie geklickt werden und erst die eine ausgeschaltet und dann die andere eingeschaltet werden oder umgekehrt.
Die Möglichkeit hier einen Schnellklich zu setzen geht leider nicht.
Programmierer sind bekanntlich faule Menschen und so musste ein Makro her, das mir diese Prozedur mit einem Klick erledigt.
Wenn Sie mit der Programmierung nicht vertraut sind, finden Sie hier ein kleines Tutorial wo und wie Sie den Code eingeben müssen:
Wer unerfahren ist und nicht weiß, wohin mit dem Code, der drücke in seinem Outlook einfach das Tastaturkürzel ALT+F11
. Damit öffnet sich der Visual Basic Editor. Unten links sollte ein "Modul1" stehen. In meinem Screenshot habe ich das Modul umbenannt in "OutlookMakros". Das deswegen, weil ich meinen Code ganz gern sortiere und schon etwas anderes dort stehen hatte. Aber es reicht, einen Doppelklick auf "Modul1" zu machen und den Code rechts in den Editorbereich hineinzuschreiben und zu speichern.
Nachdem Sie den Code vom nächsten Tab eingegeben und gespeichert haben, editieren Sie einen Termin und klicken mit der rechten Maustaste in das Menüband des Termins und wählen "Menüband anpassen" aus.
Wichtig ist, dass Sie das in einem editierten Termin machen, da es mehrere Termin-Menübänder gibt.
Rechts gibt es unten einen Button "Neue Gruppe". Es wird eine neue Gruppe in den Terminen eingefügt. Mit "Umbenennen" geben Sie einen eigenen Namen ein. Die Icons haben an dieser Stelle keine Funktion. Nun wählen Sie oben links, wo standardmäßig "Häufig verwendete Befehle" steht "Makros" aus. Dort sollte nun auch ihr frisch gespechertes Makro stehen. Markieren Sie es und klicken Sie in der Mitte "Hinzufügen" an. Nun steht das Makro in Ihrer Gruppe rechts. Klicken Sie abermals auf "Umbenennen" können Sie nun ein Icon für Ihr Makro aussuchen und den Namen anpassen.
Noch "OK" drücken und wenn Sie das nächste Mal einen Termin editieren, dann steht Ihr Makro zur Auswahl.
Falls Ihre Gruppe nicht angezeigt wird, verschieben Sie Ihre Gruppe zwischen den Gruppen "Aktionen" und "Anzeigen".
Im Tab "Screenshots" habe ich eine kleine Grafik mit den einzelnen Schritten hinterlegt.
'Makro tauscht die Kategorie einer Schulungsplanung in eine gesetzte Schulung aus.
On Error Resume Next
Dim Termin As Object, OutApp As Object,objExplorer As Object
Set OutApp = CreateObject("Outlook.Application")
Set objExplorer = OutApp.ActiveExplorer
Set Termin = objExplorer.Selection
Termin.Item(1).Categories = ""
Termin.Item(1).Categories = "Schulungen"
End Sub
Sie müssen zunächst eine Verbindung zu Ihrem Outlook herstellen. Das Makro muss wissen, was es genau machen soll. Deshalb wird ihm zunächst mitgeteilt, dass es um eine Outlook Application geht. Das erscheint etwas widersinnig, da wir ja bereits mitten in der Applikation sind, aber beim Programmieren müssen wir es noch einmal explizit zuweisen, da ja durchaus auch anderer Code möglich ist.
Da wir einen Termin editiert haben, weisen wir eben diesen unserer Objektvariablen objExplorer
zu und schließlich der Objektvariablen Termin
den editierten und damit selektionierten Termin.
Dort ist es das erste Item, in dem die Kategorie gespeichert ist. Die vorhandene wird ausgetauscht und mit der neuen Kategorie Namens "Schulungen" ersetzt:
Das eigentlich komplizierte sind die vielen Objekte, die gesetzt werden müssen.
Der Code selber funktioniert nur, wenn ein Termin mit einer bereits bestehenden Kategorie editiert wird. Hat der Termin noch keine Kategorie, gibt es entweder eine Fehlermeldung oder es passiert nichts. Abhängig davon, wie Sie den VBA-Editor eingestellt haben.
Tipp: ich habe eine feste Kategorie vergeben, die auch in meiner Kategorieliste exisiert und dort mit der grünen Farbe hinterlegt ist. Nehmen Sie also eine Kategorie aus Ihrer Liste, erscheint die auch in der dort hinterlegten Farbe. Wenn Sie die Kategorien dynamisch vergeben möchten, fügen Sie eine Inputbox ein und weisen die Kategorie entsprechend mit einer Variablen zu.