XML-Beschreibung
Auf dieser Seite
Mit Bild
XML?
XML ist die Abkürzung für eXtensible Markup Language (engl., erweiterbare Auszeichnungs-Sprache), eine Sonderform dessen, was Sie überall im Internet als HTML (Hypertext Markup Language) sehen. Die Sprache enthält die Befehle zwar auch in spitzen Klammern, ist aber viel restriktiver bei Groß-/Kleinschreibung und hat keine freien Texte dazwischen.
Mit Bild
Bevor wir uns mit den Makros beschäftigen, sollten wir vielleicht erst einmal einen Blick auf den XML-Code werfen:
Mit Bild
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="customTab" label="Contoso" insertAfterMso="TabHome"> <group idMso="GroupClipboard" /> <group idMso="GroupFont" /> <group id="customGroup" label="Contoso Tools"> <button id="customButton1" label="ConBold" size="large" onAction="conBoldSub" imageMso="Bold" /> <button id="customButton2" label="ConItalic" size="large" onAction="conItalicSub" imageMso="Italic" /> <button id="customButton3" label="ConUnderline" size="large" onAction="conUnderlineSub" imageMso="Underline" /> </group> <group idMso="GroupAlignmentExcel" /> <group idMso="GroupNumber" /> <group idMso="GroupFont" /> </tab> </tabs> </ribbon> </customUI>
Mit Bild
Damit er korrekt ist, verlangt er eine so genannte Wohlgeformtheit, das bedeutet vor allem das korrekte Öffnen und Schließen von Elementen.
Mit Bild
Das öffnende <customUI>-Element am Anfang wird ganz am Ende mit </customUI> geschlossen, daher findet sich dort der Schrägstrich. Alle übrigen XML-Befehle müssen innerhalb stehen. Es gibt auch Elemente, die keine solche Gruppe bilden, manchmal sogar das gleiche Element in beiden Versionen. Dann steht der Schrägstrich direkt vor der letzten spitzen Klammer wie bei <button />.
Mit Bild
Unabhängig von diesen Unterschieden kann jedes Element im Start-Element eine vorgegebene Auswahl von optionalen oder zwingenden Attributen enthalten. Viele Attribute besitzen eine vorgegebene Menge an zugelassenen Argumenten, andere erlauben eine freie Eingabe.
Mit Bild
Exakte Schreibweise beachten
Wie bereits erwähnt, ist XML pingelig mit der Groß-/Kleinschreibung. Sie können aber davon ausgehen, dass alle Element-Namen in Kleinbuchstaben notiert sind. Lediglich zusammengesetzte Bezeichnungen wie splitButton oder imageMso enthalten am Beginn des neuen Wortes einen Großbuchstaben.
Mit Bild
Während andere Editoren (wie beispielsweise der Microsoft Visual Web Developer oder das Visual Studio) diese Elemente und deren Attribute bereits beim Schreiben anbieten und prüfen, bietet der Custom UI Editor das nicht. Sie müssen sich diese Informationen aus anderen Quellen besorgen, daher ist der Beispiel-Code sehr praktisch als Einstieg.
Mit Bild
XML-Elemente
Die Zeile <customUI xmlns=http://schemas.microsoft.com/office/2006/01/customui> ist obligatorisch für jedes Ribbon. Darin eingebettet ist das <ribbon>-Element, welches die Beschreibung der Excel-Ribbons einleitet. Alternativ könnten hier auch mit <commands> Excel-interne Befehle abgefangen werden.
Einziges Element in <ribbon> kann nur <tabs> sein, die Sie als Registerkarte(n) auf der Excel-Oberfläche wiederfinden. Die einzelne Registerkarte heißt im XML-Sprachgebrauch <tab> und enthält mindestens eine Gruppe, welche durch eine Umrahmung erkennbar ist. Um die Registerkarte nicht am Ende, sondern zwischen den vorhandenen Registerkarten anzuzeigen, geben Sie deren interne Bezeichnung bei insertAfterMso an.
Erst in einer Gruppe können die eigentlichen Bedienungselemente, wie hier die <button>-Schaltflächen, enthalten sein.
Eingebaute Gruppen, die in Ihrer eigenen Registerkarte (und damit mehrfach) angezeigt werden sollen, müssen über ihre interne Kennung als idMso angesprochen werden. Mehr ist nicht nötig, sie sind damit voll funktionsfähig und verhalten sich exakt wie das Original.
Mit Bild
Element-Attribute
Ziemlich alle Elemente enthalten Attribute, die nach einem Gleichheitszeichen mit einem Wert in Anführungszeichen versehen werden. Die meisten Attribute sind formal optional, aber viele davon inhaltlich doch irgendwie zwingend.
Dazu zählt beispielsweise das id-Attribut mit einer eindeutigen Benennung. Diese benötigen Sie, damit das Element von VBA aus überhaupt angesprochen und bei Bedarf verändert werden kann.
Im <ribbon>-Element sorgt die Angabe startFromScratch="false" dafür, dass die originalen Excel-Ribbons weiterhin sichtbar sind. Die eigenen Tabs/Registerkarten werden also zusätzlich zu den vorhandenen angezeigt. Setzen Sie den Parameter auf "true" (Achtung: Kleinschreibung beachten!), erscheinen ausschließlich Ihre eigenen Registerkarten.
Das bisher einzige eigene Register erhält mit id="customTab" eine eindeutige Bezeichnung und mit label="Contoso" (Contoso ist der Name der Microsoft-Beispiel-Firma) eine Beschriftung, wie Sie im obigen Bild sehen konnten. Entsprechendes gilt für die darin enthaltene Gruppe und die <button>-Schaltflächen.
Die <button>-Elemente werden mittels imageMso="Bold" etc. mit einem der in Excel enthaltenen Bildern versehen, daher muss hier noch keine Bild-Datei hinzugeladen werden. Die Größe wird mit size="large" auf volle Höhe gestellt, ansonsten wäre size="normal" mit einem Drittel der Höhe der Standard.
Sobald Sie in Excel auf den <button> klicken, wird das Makro aufgerufen, welches im onAction-Attribut angegeben wurde. Daher wird es nun Zeit für die VBA-Programmierung.