Eigene Befehle in Ribbons einfügen

Um ein Ribbon an Ihre Bedürfnisse anzupassen, müssen Sie dessen interne XML-Beschreibung ändern. Wir zeigen, wie Sie das mithilfe eines speziellen Programms ganz einfach hinbekommen.

∅ 4 / 4 Bewertungen

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.

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.

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.

Fügen Sie mit dem Menü Sample/Word - Group On Insert Tab den folgenden Beispiel-Code ein:

<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>
60147_grouponinserttab_xml01.png

Der Beispiel-Code für eine eingefügte Gruppe

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.

Contoso

Contoso ist der Name einer fiktiven Firma, die Microsoft in allen Veröffentlichungen nutzt, wenn ein Beispiel benötigt wird.

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:

<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>
60148_grouponinserttab_xml02.png

Der korrigierte XML-Code

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":

60149_grouponinserttab_ribbon01.png

Eine eigene Gruppe im bestehenden Register

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:

'callback for customButton onAction
Sub insertDocID(control As IRibbonControl)
   MsgBox "hier Nummer einfügen..."
End Sub
60150_grouponinserttab_vba01.png

Die passende Prozedur für das Ribbon

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.

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.