Backstage-Bereich von Office erweitern

Möchtest Du den gesamten Artikel lesen? Und vielleicht sogar den Artikel im PDF-Format und die Beispieldateien herunterladen? Dann hole Dir den Artikel gleich hier - völlig kostenlos!

Wenn man eine der Office-Anwendungen um ein selbst programmiertes COM-Add-In erweitern möchte, kann man den Backstage-Bereich nutzen, um eventuell notwendige Optionen für dieses COM-Add-In dort abzubilden. Wir würden dann einen eigenen Reiter auf der linken Seite des Backstage-Bereichs platzieren, über den wir einen eigenen Bereich anzeigen können. Diesem wiederum können wir verschiedene Steuerelemente für die Anzeige und Eingabe von Optionen hinzufügen. Dieser Artikel zeigt, wie wir ein einfaches COM-Add-In mit twinBASIC erstellen und dieses mit der Definition einer Backstage-Erweiterung ausstatten und wie diese Erweiterung beim Starten der Anwendung angezeigt wird.

Mit twinBASIC, der Entwicklungsumgebung von Wayne Philips, lassen sich einfach COM-Add-Ins erstellen, mit denen wir auch den Backstage-Bereich anpassen können.

twinBASIC in der jeweils aktuellen Version kannst Du hier herunterladen:

https://github.com/twinbasic/twinbasic/releases

Nach dem Kopieren der enthaltenen Dateien in einen beliebigen Ordner können wir twinBASIC mit einem Doppelklick auf die .exe-Datei starten. Wir landen dann im Startbildschirm, wo wir auf der Seite Samples den Eintrag Sample 5. MyCOMAddin auswählen (siehe Bild 1).

Erstellen eines COM-Add-Ins auf Basis des Beispiels

Bild 1: Erstellen eines COM-Add-Ins auf Basis des Beispiels

Im nächsten Dialog können wir bereits den Projektnamen festlegen (siehe Bild 2). Die übrigen Optionen behalten wir bei.

Festlegen des Projektnamens

Bild 2: Festlegen des Projektnamens

Damit haben wir bereits ein COM-Add-In-Projekt angelegt, das wir nun direkt testen können. Dazu schließen wir alle eventuell geöffneten Access- und Excel-Anwendungen, denn für dieses ist die Demo ausgelegt.

Danach betätigen wir den Menübefehl File|Build (siehe Bild 3). Dies erstellt, nachdem wir den Speicherort für die Projektdatei angegeben haben, das COM-Add-In.

Projekt erstellen

Bild 3: Projekt erstellen

Das bedeutet, dass die DLL für das COM-Add-In erstellt und in die Registry eingetragen wird. Diese Registry-Einträge werden beim Start der Office-Anwendungen ausgelesen und sorgen dafür, dass die im COM-Add-In angegebenen Ereignisprozeduren ausgeführt werden, sodass das COM-Add-In bereits beim nächsten Start ausführbereit ist.

Erster Test in Excel

Starten wir nun Excel und öffnen ein Workbook, sehen wir im Ribbon einen neuen Registerreiter namens twinBASIC Test, der eine Schaltfläche namens Hello World enthält. Klicken wir diese an, wird die provisorische Methode zum Anzeigen einer Meldung ausgeführt (siehe Bild 4).

Die Funktion des neuen COM-Add-Ins ist nun direkt in der jeweiligen Office-Anwendung verfügbar.

Bild 4: Die Funktion des neuen COM-Add-Ins ist nun direkt in der jeweiligen Office-Anwendung verfügbar.

Zielanwendung definieren

In twinBASIC finden wir im PROJECT EXPLORER unter Sources zwei Module. Das Modul DllRegistration enthält den Code, der das COM-Add-In für die gewünschten Office-Anwendungen installiert. Im oberen Bereich werden verschiedene Konstanten definieren mit den Pfaden der Registry, in denen die Registry-Informationen beim Registrieren eingetragen werden sollen (siehe Listing 1). Wichtig: Hier muss für AddinClassName der Name der soeben umbenannten Klasse eingetragen werden, also Backstage.

Const AddinProjectName As String = VBA.Compilation.CurrentProjectName
Const AddinClassName As String = "Backstage"
Const AddinQualifiedClassName As String = AddinProjectName & "." & AddinClassName
Const RootRegistryFolder_ACCESS As String = "HKCU\SOFTWARE\Microsoft\Office\Access\Addins\" & AddinQualifiedClassName & "\"
Const RootRegistryFolder_EXCEL As String = "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\" & AddinQualifiedClassName & "\"
Const RootRegistryFolder_WORD As String = "HKCU\SOFTWARE\Microsoft\Office\Word\Addins\" & AddinQualifiedClassName & "\"
Const RootRegistryFolder_OUTLOOK As String = "HKCU\SOFTWARE\Microsoft\Office\Outlook\Addins\" & AddinQualifiedClassName & "\"
Const RootRegistryFolder_POWERPOINT As String = "HKCU\SOFTWARE\Microsoft\Office\Powerpoint\Addins\" _
         & AddinQualifiedClassName & "\"

Listing 1: Konstanten für das Registrieren des COM-Add-Ins für die jeweilige Office-Anwendung

Die Funktion DllRegisterServer erledigt das Eintragen der notwendigen Informationen in der Registry (siehe Listing 2).

Public Function DllRegisterServer() As Boolean
     On Error GoTo RegError
     Dim wscript As Object = CreateObject("wscript.shell")
     wscript.RegWrite RootRegistryFolder_ACCESS & "FriendlyName", AddinProjectName, "REG_SZ"
     wscript.RegWrite RootRegistryFolder_ACCESS & "Description", AddinProjectName, "REG_SZ"
     wscript.RegWrite RootRegistryFolder_ACCESS & "LoadBehavior", 3, "REG_DWORD"
     
     wscript.RegWrite RootRegistryFolder_EXCEL & "FriendlyName", AddinProjectName, "REG_SZ"
     wscript.RegWrite RootRegistryFolder_EXCEL & "Description", AddinProjectName, "REG_SZ"
     wscript.RegWrite RootRegistryFolder_EXCEL & "LoadBehavior", 3, "REG_DWORD"
     wscript.RegWrite RootRegistryFolder_WORD & "FriendlyName", AddinProjectName, "REG_SZ"
     wscript.RegWrite RootRegistryFolder_WORD & "Description", AddinProjectName, "REG_SZ"
     wscript.RegWrite RootRegistryFolder_WORD & "LoadBehavior", 3, "REG_DWORD"
     
     wscript.RegWrite RootRegistryFolder_OUTLOOK & "FriendlyName", AddinProjectName, "REG_SZ"
     wscript.RegWrite RootRegistryFolder_OUTLOOK & "Description", AddinProjectName, "REG_SZ"
     wscript.RegWrite RootRegistryFolder_OUTLOOK & "LoadBehavior", 3, "REG_DWORD"
     
     wscript.RegWrite RootRegistryFolder_POWERPOINT & "FriendlyName", AddinProjectName, "REG_SZ"
     wscript.RegWrite RootRegistryFolder_POWERPOINT & "Description", AddinProjectName, "REG_SZ"
     wscript.RegWrite RootRegistryFolder_POWERPOINT & "LoadBehavior", 3, "REG_DWORD"
     Return True
RegError:
     MsgBox "DllRegisterServer -- An error occured trying to write to the system registry:" & vbCrLf & _
             Err.Description & " (" & Hex(Err.Number) & ")"
     Return False
End Function

Listing 2: Funktion zum Eintragen der COM-Add-In-Informationen in die Registry

Wir haben hier zu Beispielzwecken einmal die Eintragungen für alle fünf Office-Anwendungen eingetragen, also für Access, Excel, Outlook, Word und PowerPoint. Es werden jeweils vier Einträge für den entsprechenden Registry-Zweig angelegt.

In Bild 5 sehen wir diese Einträge für Word. Unter AddIns befinden sich alle aktuell registrieren Add-Ins, hier auch das von uns hinzugefügte COM-Add-In namens amvBackstage.

Eintrag für ein COM-Add-In für Word

Bild 5: Eintrag für ein COM-Add-In für Word

Je nachdem, für welche Anwendung Du ein COM-Add-In mit einer Anpassung des Backstage-Bereichs hinzufügen möchtest, kannst Du einen oder mehrere der fünf Konstanten und Anweisungen zum Eintragen in die Registry beibehalten, die Übrigen können auskommentiert werden.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar