{"id":55000467,"date":"2025-06-01T00:00:00","date_gmt":"2026-02-06T10:47:51","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=467"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"BackstageBereich_per_COMAddIn_anpassen","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/BackstageBereich_per_COMAddIn_anpassen\/","title":{"rendered":"Backstage-Bereich per COM-Add-In anpassen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/17a043c25ce44b8bbe04f7cca802cf47\" width=\"1\" height=\"1\" alt=\"\"><b>Wenn man eine der Office-Anwendungen um ein selbst programmiertes COM-Add-In erweitern m&ouml;chte, kann man den Backstage-Bereich nutzen, um eventuell notwendige Optionen f&uuml;r dieses COM-Add-In dort abzubilden. Wir w&uuml;rden dann einen eigenen Reiter auf der linken Seite des Backstage-Bereichs platzieren, &uuml;ber den wir einen eigenen Bereich anzeigen k&ouml;nnen. Diesem wiederum k&ouml;nnen wir verschiedene Steuerelemente f&uuml;r die Anzeige und Eingabe von Optionen hinzuf&uuml;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.<\/b><\/p>\n<p>Mit <b>twinBASIC<\/b>, der Entwicklungsumgebung von Wayne Philips, lassen sich einfach COM-Add-Ins erstellen, mit denen wir auch den Backstage-Bereich anpassen k&ouml;nnen.<\/p>\n<p><b>twinBASIC <\/b>in der jeweils aktuellen Version kannst Du hier herunterladen:<\/p>\n<pre>https:\/\/github.com\/twinbasic\/twinbasic\/releases<\/pre>\n<p>Nach dem Kopieren der enthaltenen Dateien in einen beliebigen Ordner k&ouml;nnen wir twinBASIC mit einem Doppelklick auf die <b>.exe<\/b>-Datei starten. Wir landen dann im Startbildschirm, wo wir auf der Seite Samples den Eintrag <b>Sample 5. MyCOMAddin <\/b>ausw&auml;hlen (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_03\/pic_467_001.png\" alt=\"Erstellen eines COM-Add-Ins auf Basis des Beispiels\" width=\"599,6265\" height=\"482,4065\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Erstellen eines COM-Add-Ins auf Basis des Beispiels<\/span><\/b><\/p>\n<p>Im n&auml;chsten Dialog k&ouml;nnen wir bereits den Projektnamen festlegen (siehe Bild 2). Die &uuml;brigen Optionen behalten wir bei.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_03\/pic_467_002.png\" alt=\"Festlegen des Projektnamens\" width=\"549,6265\" height=\"297,9777\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Festlegen des Projektnamens<\/span><\/b><\/p>\n<p>Damit haben wir bereits ein COM-Add-In-Projekt angelegt, das wir nun direkt testen k&ouml;nnen. Dazu schlie&szlig;en wir alle eventuell ge&ouml;ffneten Access- und Excel-Anwendungen, denn f&uuml;r dieses ist die Demo ausgelegt. <\/p>\n<p>Danach bet&auml;tigen wir den Men&uuml;befehl <b>File|Build <\/b>(siehe Bild 3). Dies erstellt, nachdem wir den Speicherort f&uuml;r die Projektdatei angegeben haben, das COM-Add-In.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_03\/pic_467_003.png\" alt=\"Projekt erstellen\" width=\"599,6265\" height=\"416,3521\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Projekt erstellen<\/span><\/b><\/p>\n<p>Das bedeutet, dass die DLL f&uuml;r das COM-Add-In erstellt und in die Registry eingetragen wird. Diese Registry-Eintr&auml;ge werden beim Start der Office-Anwendungen ausgelesen und sorgen daf&uuml;r, dass die im COM-Add-In angegebenen Ereignisprozeduren ausgef&uuml;hrt werden, sodass das COM-Add-In bereits beim n&auml;chsten Start ausf&uuml;hrbereit ist.<\/p>\n<h2>Erster Test in Excel<\/h2>\n<p>Starten wir nun Excel und &ouml;ffnen ein Workbook, sehen wir im Ribbon einen neuen Registerreiter namens <b>twinBASIC Test<\/b>, der eine Schaltfl&auml;che namens <b>Hello World <\/b>enth&auml;lt. Klicken wir diese an, wird die provisorische Methode zum Anzeigen einer Meldung ausgef&uuml;hrt (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_03\/pic_467_004.png\" alt=\"Die Funktion des neuen COM-Add-Ins ist nun direkt in der jeweiligen Office-Anwendung verf&uuml;gbar.\" width=\"700\" height=\"219,9999\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Die Funktion des neuen COM-Add-Ins ist nun direkt in der jeweiligen Office-Anwendung verf&uuml;gbar.<\/span><\/b><\/p>\n<h2>Zielanwendung definieren<\/h2>\n<p>In twinBASIC finden wir im <b>PROJECT EXPLORER<\/b> unter Sources zwei Module. Das Modul <b>DllRegistration <\/b>enth&auml;lt den Code, der das COM-Add-In f&uuml;r die gew&uuml;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&uuml;r <b>AddinClassName <\/b>der Name der soeben umbenannten Klasse eingetragen werden, also <b>Backstage<\/b>.<\/p>\n<p>Die Funktion <b>DllRegisterServer <\/b>erledigt das Eintragen der notwendigen Informationen in der Registry (siehe Listing 2).<\/p>\n<p>Wir haben hier zu Beispielzwecken einmal die Eintragungen f&uuml;r alle f&uuml;nf Office-Anwendungen eingetragen, also f&uuml;r Access, Excel, Outlook, Word und PowerPoint. Es werden jeweils vier Eintr&auml;ge f&uuml;r den entsprechenden Registry-Zweig angelegt.<\/p>\n<p>In Bild 5 sehen wir diese Eintr&auml;ge f&uuml;r Word. Unter <b>AddIns <\/b>befinden sich alle aktuell registrieren Add-Ins, hier auch das von uns hinzugef&uuml;gte COM-Add-In namens <b>amvBackstage<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_03\/pic_467_005.png\" alt=\"Eintrag f&uuml;r ein COM-Add-In f&uuml;r Word\" width=\"649,627\" height=\"246,8582\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Eintrag f&uuml;r ein COM-Add-In f&uuml;r Word<\/span><\/b><\/p>\n<p>Je nachdem, f&uuml;r welche Anwendung Du ein COM-Add-In mit einer Anpassung des Backstage-Bereichs hinzuf&uuml;gen m&ouml;chtest, kannst Du einen oder mehrere der f&uuml;nf Konstanten und Anweisungen zum Eintragen in die Registry beibehalten, die &Uuml;brigen k&ouml;nnen auskommentiert werden.<\/p>\n<h2>Registrierung aufheben<\/h2>\n<p>Wenn das COM-Add-In aus der Registrierung entfernt werden und somit nicht mehr beim Start der jeweiligen Office-Anwendungen aufgerufen werden soll, m&uuml;ssen wir die Funktion <b>DllUnregisterServer <\/b>ausf&uuml;hren (siehe Listing 3).<\/p>\n<p>Auch hier sind wieder die Anweisungen f&uuml;r das Entfernen der Registry-Eintr&auml;ge f&uuml;r alle f&uuml;nf Office-Anwendungen enthalten. Wenn nur Registrierungen f&uuml;r bestimmte Office-Anwendungen hinterlegt wurden, k&ouml;nnen wir auch die entsprechenden Anweisungen zum Entfernen der Registry-Eintr&auml;ge entfernen.<\/p>\n<p>Die beiden Funktionen <b>DllRegisterServer<\/b> und <b>DllUnregisterServer <\/b>werden &uuml;brigens nicht nur aufgerufen, wenn wir in twinBASIC den Befehl <b>File|Build <\/b>ausf&uuml;hren. Auch wenn die wir so erstellte DLL sp&auml;ter mit dem Befehl <b>Regsvr32.exe <\/b>registrieren, werden diese ausgef&uuml;hrt. Das Gleiche gilt f&uuml;r das Aufhaben der Registrierung, wobei wir <b>Regsvr32.exe <\/b>dann noch den Parameter <b>\/u <\/b>&uuml;bergeben m&uuml;ssen.<\/p>\n<h2>Klasse des COM-Add-Ins anpassen<\/h2>\n<p>Damit kommen wir zum eigentlichen Teil des COM-Add-Ins, den wir mit der Definition einer Backstage-Erweiterung ausstatten wollen. Diese finden wir im Modul, das im Demo-Projekt <b>MyCOMAddin.twin <\/b>hei&szlig;t. Dieses benennen wir erst einmal um, zum Beispiel in <b>Backstage.twin<\/b>. Dazu darf das Modul aktuell nicht ge&ouml;ffnet sein. Danach &ouml;ffnen wir das Modul <b>Backstage.twin <\/b>und &auml;ndern auch dort noch den eigentlichen Klassennamen von <b>MyCOMAddIn <\/b>auf <b>Backstage<\/b> (siehe Bild 6).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_03\/pic_467_006.png\" alt=\"Umbenennen der Hauptklasse des COM-Add-Ins\" width=\"649,627\" height=\"331,8745\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Umbenennen der Hauptklasse des COM-Add-Ins<\/span><\/b><\/p>\n<p>Nun beginnen wir mit der eigentlichen Erstellung der <b>Backstage<\/b>-Anpassung.<\/p>\n<h2>Backstage f&uuml;r das COM-Add-In anzeigen<\/h2>\n<p>Im Modul <b>Backstage.twin <\/b>finden wir nun folgende Bestandteile:<\/p>\n<ul>\n<li>Zwei <b>Implements<\/b>-Anweisungen. Die erste gibt an, dass die Schnittstelle <b>IDTExtensibility2 <\/b>implementiert wird. Diese sorgt daf&uuml;r, dass beim Start der jeweiligen Office-Anwendung die f&uuml;r die Schnittstelle definierten Ereignisprozeduren ausgef&uuml;hrt werden, zum Beispiel <b>OnConnection<\/b> direkt beim Start. Hier werden dem COM-Add-In Verweise unter anderem auf die aufrufende Office-Anwendung &uuml;bergeben. Diese ist wichtig, wenn wir im Code des COM-Add-In auf die Instanz der Anwendung zugreifen wollen.<\/li>\n<li>Die zweite <b>Implements<\/b>-Anweisung ist f&uuml;r unseren Artikel wichtig. Sie gibt an, dass die Schnittstelle <b>IRibbonExtensibility <\/b>implementiert wird. Diese erfordert die Implementierung der einzigen Funktion, die beim Start des COM-Add-Ins aufgerufen wird und welche die Backstage-Definition zusammenstellen, die dann von der Office-Anwendung angewendet werden soll. In diese definieren wir also den Backstage-Bereich, den wir der Office-Anwendung hinzuf&uuml;gen wollen. Die Funktion gibt diese XML-Definition an die aufrufende Anwendung zur&uuml;ck.<\/li>\n<li>Die folgenden f&uuml;nf Ereignisprozeduren sind Teile der Implementierung der Schnittstelle <b>IDTExtensibility2 <\/b>und enthalten Code, der zu den verschiedenen Ereignissen ausgef&uuml;hrt wird &#8211; f&uuml;r unser Beispiel aber nicht relevant.<\/li>\n<li>Interessant ist wieder die folgende Funktion namens <b>GetCustomUI<\/b>. Diese wird durch <b>IRibbonExtensibility<\/b> implementiert und stellt die XML-Definition zum Anpassen des Ribbons und somit auch des Backstage-Bereichs der Anwendung zusammen, die beim Aufruf der Anwendung direkt angewendet wird (siehe Listing 4). Diese Funktion passen wir an, damit die von uns gew&uuml;nschte Backstage-Erweiterung in der Anwendung erscheint.<\/li>\n<\/ul>\n<h2>Backstage-Erweiterung statt Ribbon-Erweiterung<\/h2>\n<p>Es gibt eine wichtige &Auml;nderung gegen&uuml;ber dem Ribbon-XML aus der Vorlage. Wir m&uuml;ssen den Namespace so &auml;ndern, dass er sich auf die aktuellere Version bezieht, und zwar auf <b>2009\/07 <\/b>statt auf <b>2006\/01<\/b>. In der Version von <b>2006\/01 <\/b>war das <b>backstage<\/b>-Element n&auml;mlich noch gar nicht enthalten. Somit w&uuml;rden wir Fehler erhalten, wenn wir unter diesen Bedingungen das <b>backstage<\/b>-Element verwenden w&uuml;rden.<\/p>\n<p>Anschlie&szlig;end k&ouml;nnen wir den Code, den wir in der Funktion <b>GetCustomUI <\/b>finden, fast vollst&auml;ndig entfernen. Genau genommen l&ouml;schen wir nun alle Zeilen, die sich zwischen den Anweisungen zum Hinzuf&uuml;gen des &ouml;ffnenden und schlie&szlig;enden <b>customUI<\/b>-Elements befinden.<\/p>\n<p>Dazwischen k&ouml;nnen wir nun mit der Gestaltung unserer Backstage-Erweiterung beginnen. Wir f&uuml;gen ein <b>backstage<\/b>-Element hinzu. Au&szlig;erdem legen wir darin ein <b>button<\/b>-Element an mit dem Attribut <b>onAction <\/b>mit dem Wert <b>OnAction<\/b>.<\/p>\n<p>Nach dem erneuten Erstellen des COM-Add-Ins k&ouml;nnen wir eine der f&uuml;nf Office-Anwendungen starten und finden dort im Backstage-Bereich ganz unten den Befehl <b>Beispielbutton <\/b>vor, den wir auch ausf&uuml;hren k&ouml;nnen (siehe Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_03\/pic_467_007.png\" alt=\"Neuer Befehl im Backstage-Bereich, hier in Word\" width=\"524,6265\" height=\"476,4726\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Neuer Befehl im Backstage-Bereich, hier in Word<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Artikel zeigt, wie Du Office-Anwendungen &uuml;ber ein COM-Add-In mit einem neuen Backstage-Element erweitern kannst. In einem weiteren Artikel namens <b>Backstage-Bereich von Office erweitern <\/b>(<b>www.vbentwickler.de\/468<\/b>) zeigen wir, welche M&ouml;glichkeiten das Backstage-Element insgesamt bietet.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>amvBackstage.twinproj<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/4797E690-A244-47ED-ACC3-E7FB1EFFC368\/vbe_467.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn man eine der Office-Anwendungen um ein selbst programmiertes COM-Add-In erweitern m&ouml;chte, kann man den Backstage-Bereich nutzen, um eventuell notwendige Optionen f&uuml;r dieses COM-Add-In dort abzubilden. Wir w&uuml;rden dann einen eigenen Reiter auf der linken Seite des Backstage-Bereichs platzieren, &uuml;ber den wir einen eigenen Bereich anzeigen k&ouml;nnen. Diesem wiederum k&ouml;nnen wir verschiedene Steuerelemente f&uuml;r die Anzeige und Eingabe von Optionen hinzuf&uuml;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.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662025,66032025,44000026,44000030,44000036],"tags":[],"yst_prominent_words":[],"class_list":["post-55000467","post","type-post","status-publish","format-standard","hentry","category-662025","category-66032025","category-Outlook_programmieren","category-PowerPoint_programmieren","category-Ribbon_programmieren"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000467"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000467\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000467"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}