Mit Bild
Um ein Ribbon an Ihre Bedürfnisse anzupassen, müssen Sie dessen interne XML-Beschreibung ändern. Wir zeigen, wie man das mithilfe eines speziellen Programms ganz einfach hinbekommt.
Mit Bild
Im Beitrag "Ribbons erstellen in Word 2007" haben Sie gesehen, wie Sie eine neue Registerkarte mit eigenen Befehlen an das Word-Ribbon anfügen. Sie finden dort die grundsätzlichen Tipps zur Erstellung und Programmierung der Ribbons und was dabei zu beachten ist.
Mit Bild
Manchmal darf es aber auch ein bisschen weniger sein - wenn Sie in einer vorhandenen Registerkarte lediglich einen Befehl ergänzen möchten. Erstellen Sie dazu ein leeres Word-Dokument mit Makros im *.docm- oder *.dotm-Format. Dann schließen Sie es in Word und öffnen es im Custom UI Editor.
Mit Bild
Fügen Sie mit dem Menü Sample/Word - Group On Insert Tab den folgenden Beispiel-Code ein:
Mit Bild
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab idMso="TabInsert"> <group id="customGroup" label="Contoso" insertAfterMso="GroupIllustrations"> <button id="customButton" label="Document ID" size="large" imageMso="ListNumVal" onAction="insertDocID" /> </group> </tab> </tabs> </ribbon> </customUI>
Mit Bild
Der Beispiel-Code für eine eingefügte Gruppe
Mit Bild
Dabei wird dank idMso="TabInsert" das integrierte Register Einfügen mitbenutzt, deswegen erhält es auch kein neues label. Darin legt der XML-Code eine neue Gruppe namens customGroup an, welche wegen insertAfterMso="GroupIllustrations" nach der vorhandenen Gruppe Illustrationen erscheinen soll.
Mit Bild
Contoso
Contoso ist der Name einer fiktiven Firma, die Microsoft in allen Veröffentlichungen nutzt, wenn ein Beispiel benötigt wird.
Mit Bild
Leider ist der Beispiel-Code fehlerhaft, denn erstens heißt die Gruppe in Wirklichkeit "GroupInsertIllustrations", was Sie manuell ändern müssen. Zweitens gibt es auch die im <button>-Element benutzte imageMso="ListNumVal" nicht, hier muss es stattdessen imageMso="ListSetNumberingValue" heißen. Nach diesen Änderungen sieht der korrekte XML-Code so aus:
Mit Bild
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab idMso="TabInsert"> <group id="customGroup" label="Contoso" insertAfterMso="GroupInsertIllustrations"> <button id="customButton" label="Document ID" size="large" imageMso="ListSetNumberingValue" onAction="insertDocID" /> </group> </tab> </tabs> </ribbon> </customUI>
Mit Bild
Der korrigierte XML-Code
Mit Bild
Nun können Sie die Datei im Custom UI Editor schließen und sehen in Word Ihre neue Gruppe in der vorhandenen Registerkarte "Einfügen":
Mit Bild
Eine eigene Gruppe im bestehenden Register
Mit Bild
Allerdings funktioniert der Klick auf die Schaltfläche nicht, denn das <button>-Element ruft in seinem onAction-Attribut eine Prozedur insertDocID auf, die noch nicht vorhanden ist.
Fügen Sie also in Word im VBA-Editor ein neues Modul hinzu (Einfügen/Modul) und schreiben Sie in das neue Modul diese Prozedur mit der passenden Signatur:
Mit Bild
'callback for customButton onAction Sub insertDocID(control As IRibbonControl) MsgBox "hier Nummer einfügen..." End Sub
Mit Bild
Die passende Prozedur für das Ribbon
Mit Bild
Auch wenn die Prozedur lediglich eine Meldung erzeugt, ist das Ribbon damit voll funktionsfähig und enthält nun eine eigene Gruppe an der gewünschten Stelle.
Mit Bild
Gleiche Funktionalität in allen Office 2007-Programmen
Auch wenn das Beispiel hier in Word eingebaut ist, funktioniert es grundsätzlich gleich in den anderen Office 2007-Programmen. Lediglich die Namen der integrierten Register und Gruppen können sich unterscheiden.