Ribbon für VBA – Oberfläche basteln

Da hat man ganz tollen VBA-Code geschrieben, aber Word und Excel sind so fies und bieten den gar nicht im Ribbon an. Ja OK, im Entwickler-Tab den man aber erst einblenden muss. Und der heißt ja nicht grundlos „Entwickler“ anstatt „Anwender“. Aber wenn man da jetzt doch einen eigenen Tab für seine Programme haben will? Geht – wir brauchen:

Kochrezept

  1. Kaffee … oder Tee … oder Kekse … oder alles zusammen. 🙂
  2. Ein brauchbares zentrales Template wo wir alles reinwerfen können, sowohl VBA-Code als auch das Ribbon.
  3. Ein paar hübsche Icons als png sofern nicht die integrierten genutzt werden sollen.
  4. Einen Editor der das Ribbon in das Template pflanzt.
  5. Optional aber empfohlen: sowas wie Visual Studio Community.

OK also los, 1. setze ich jetzt mal direkt voraus. 2. hatten wir schon, und zwar hier, ist also praktisch schon erledigt. 3. Die Icons, kann man selbst bauen oder ein fertiges Paket benutzen, wobei man auf eine brauchbare Lizensierung geachtet hat. Für den Moment nehmen wir einfach mal die Icons aus unserem iox:

Grundlage

Kommen wir zum entscheidenen Punkt, den Editor. Früher, vor´m Krieg, gab´s nur den Custom UI Editor von Microsoft. Dieser benötigt leider das .net 2 Framework und selbiges muss erst in Windows nachinstalliert werden. Der Editor funktioniert, aber es gibt mittlerweile etwas frischeres, den: Office Ribbon X Editor. Der muss also runtergeladen und installiert werden. Schauen wir uns das gute Stück mal an:

der jungfräuliche Editor

OK, was interessiert uns, was müssen wir machen. Im linken Bereich werden wir die Dateien verwalten, im rechten den eigentlichen Code für das Ribbon. Ribbons sind nämlich XML „Code“, der beschreibt, was dargestellt werden soll. Ansonsten benötigen wir vor allem die Validierung. Generate Callbacks können wir zusätzlich nutzen, müssen wir aber nicht.

Extrem wichtig: Die zu bearbeitende Datei sollte entweder im Ribbon Editor oder in Office geöffnet sein – niemals zeitgleich! Man überschreibt sich sonst gerne mal seine Arbeit und das ist sehr frustrierend. 🙁

Da wir ja unser zentrales Template schon haben, können wir das direkt öffnen. Entweder per Open oder per Drag´n´Drop der Datei in das Fenster. Per Rechtsklick kommt der passende XML-Part dazu, in diesem Falle 2010+. Wir starten unglaublich fröhlich mit Word und seiner dotm.

In den eingefügten XML-Part können nun die Icons eingefügt oder der Quellcode bearbeitet werden. Machen wir auch gleich.

Als nächstes kommt der absolute Rumpf für das Ribbon in den XML-Editor. Dann kann validiert, gespeichert und zum Test mal Word gestartet werden.

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  <ribbon>
    <tabs>
      <tab id="VBACore" label="Mein VBA" >
        <group id="Gruppe1" label="Gruppenname">
          <button id="Button1" label="Klick" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

Gut, das ist ein Ergebnis, wenn auch kein üppiges. Aber es funktioniert und wir können uns anschauen was wohin gehört.

  • Jedes Element hat eine id, diese muss eindeutig (einzigartig) sein. Elemente ohne id werden nicht im Ribbon angezeigt. Ruhig mal ausprobieren. 😉
  • Das label definiert den angezeigten Namen des Elements.
  • Alles liegt in einer fest definierten XML-Struktur: customUI > ribbon > tabs > tab > group > button.
  • Der Button ist klein und hat kein Icon.
  • Der Button ist zwar klickbar aber es passiert nix. Wäre auch zu schön und ein bisschen verstörend gewesen. 🤨

Optisches Würzen

Dann machen wir das doch mal hübscher. Fügen wir zwei Icons hinzu und erklären im Code, welches verwendet werden soll.

Aufgeplustert auf zwei Buttons sind ein paar Zeilen hinzugekommen, zum besseren Verständnis alles eingerückt. Mit image wird das Icon deklariert, und zwar mit seinem Namen wie es links steht. Das sind auch nichts anderes als eindeutige IDs die man im Editor auch ändern kann. Zusätzlich wurde der Button mit size in seiner Größe geändert.

Grundsätzlich nutzen kleine Elemente 16 Pixel Icons und große Elemente 32 Pixel. Skalieren geht, sieht aber oft doof aus.

Gut, was können wir dem Anwender noch gutes tun? Ein paar hilfreiche Tipps zur Anwendung vielleicht.

Mit screentip und supertip können dem gewillten Anwender Hilfetexte bereitgestellt werden, die auftauchen wenn das Element mit der Maus überfahren wird und natürlich kurz gewartet wird.

Grundsätzlich ist das schon alles zum optischen Aufbau des Ribbons. Das Verheiraten von Oberfläche und VBA-Code erfolgt im nächsten Schritt. Für den Moment gibt es noch ein paar Hinweise für den gelungenen Kochtopf.

Abschmecken

Vielleicht gefällt einem ja ein vorhandenen Icon im Programm oder man kann oder möchte keine eigenen bauen. Dafür gilt es die Option imageMso anstatt image zu nehmen. Fragt sich nur noch: Wie heißt das gewünschte Icon? Dazu zwei Optionen.

  • Der Programmierer des Editors hat unter Help > useful links eine Seite mit den imageMso Namen hinterlegt
  • Man benutzt Office selber um an den Namen des Icons zu kommen. Dafür geht man in die Optionen und sucht bei Menüband anpassen das gewünschte Icon. Per Hover erhält man den Namen.
imageMso Name in den Optionen finden

Anderes Problem, vor allem als Anfänger. Woher weiß ich, welche Optionen ich setzen kann und welche Elemente es überhaupt gibt? Dazu auch wieder zwei Optionen:

  • Man durchforstet das www und sucht sich alles zusammen. Das ist müßig, aber man sieht womöglich gleich wie das Ergebnis aussieht. Eine übersichtliche Seite die mir anfangs gut weiterhalf ist accessribbon.de auf der man alle Elemente durchstöbern kann. Die Eigenschaften stehen immer unter dem XML-Code. Alternativ useful links im Editor, dort wird auf die Microsoft Hilfeseiten verwiesen.
  • Man ist schon ein wenig gewiefter und nutzt den 5. Punkt vom Anfang, Visual Studio. Man erstellt eine leere neue XML-Datei und kopiert den Code aus dem Ribbon-Editor dort hinein. Anhand des XML-Namespace (das xmlns ganz oben) weiß Visual Studio, welche Elemente wo möglich sind und schlägt alles richtig vor.

Grundsätzlich empfand ich Visual Studio deutlich angenehmer als den Ribbon-Editor, sowohl den alten von Microsoft als auch den neueren. Nur die Validierung habe ich dort gemacht und die Icons eingefügt. Das darf aber jeder selbst ausprobieren. 😁