{"id":55000904,"date":"2013-10-01T00:00:00","date_gmt":"2020-05-22T21:30:44","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=904"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Globale_RibbonAnpassung","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/","title":{"rendered":"Globale Ribbon-Anpassung"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/ccacd296703149dfae23c196114dba5e\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Es gibt verschiedene Wege, das Access-Ribbon anzupassen &#8211; und diese variieren auch noch von der jeweils verwendeten Access-Version. Dies gilt f&uuml;r allem f&uuml;r die M&ouml;glichkeiten, das Ribbon von Access global direkt &uuml;ber die Benutzeroberfl&auml;che anzupassen &#8211; hier entwickelt sich Access von Version zu Version weiter. Globale Anpassung meint solche &auml;nderungen, die unabh&auml;ngig von der aktuell geladenen Anwendung durchgef&uuml;hrt werden sollen und somit etwa Elemente der Entwicklungsumgebung ansteuern sollen. Dieser Beitrag zeigt eine Erweiterung, mit der Sie die gew&uuml;nschten &auml;nderungen dauerhaft anwenden k&ouml;nnen.<\/b><\/p>\n<p><b>Arten der Ribbon-Anpassung<\/b><\/p>\n<p>Es gibt verschiedene Wege, das Ribbon von Access anzupassen. Der erste und Ihnen vermutlich bereits bekannte Weg besteht darin, die Tabelle <b>USysRibbons <\/b>mit einer entsprechenden Ribbon-Definition zu f&uuml;llen und den Namen der Ribbon-Definition mit einer entsprechenden Eigenschaft einzustellen.<\/p>\n<p>Die &auml;nderungen werden dann geladen, wenn Sie die Anwendung starten &#8211; und sind somit anwendungsbezogen.<\/p>\n<p>Einfache &auml;nderungen der eingebauten Ribbon-Elemente realisieren Sie je nach Access-Version &uuml;ber die Benutzeroberfl&auml;che. Die &auml;nderungen werden dann in einer entsprechenden Datei gespeichert, die beim Start von Access eingelesen und angewendet wird. Auf Details wollen wir an dieser Stelle nicht eingehen.<\/p>\n<p>Stattdessen schauen wir uns eine sehr flexible Variante an, die aus einer einzigen DLL sowie einer Konfigurationsdatei besteht. Die DLL namens <b>InstantRibbonChanger.dll <\/b>muss zun&auml;chst registriert werden (mehr dazu weiter unten). Au&szlig;erdem m&uuml;ssen Sie die gew&uuml;nschten Anpassungen des Ribbons in einer Konfigurationsdatei namens <b>InstantRibbonChanger.ini <\/b>definieren.<\/p>\n<p>Dabei bedienen wir uns genau der gleichen Syntax, die auch f&uuml;r das Definieren der Ribbons per XML zum Einsatz kommt.<\/p>\n<p>Die Datei sieht beispielsweise wie in Listing 1 aus.<\/p>\n<pre>[Access]\r\n&lt;xml version=\"1.0\" encoding=\"iso-8859-1\"&gt;\r\n&lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2006\/01\/customui\"&gt;\r\n   &lt;ribbon&gt;\r\n     &lt;tabs&gt;\r\n       &lt;tab idMso=\"TabHomeAccess\"&gt;\r\n         &lt;group id=\"grp1\" insertBeforeMso=\"GroupViews\" label=\"Datenbank\"&gt;\r\n           &lt;control idMso=\"FileBackupDatabase\" label=\"Sichern\"\/&gt;\r\n           &lt;control idMso=\"FileCompactAndRepairDatabase\" label=\"Komprimieren\"\/&gt;\r\n           &lt;control idMso=\"SourceControlOptions\" label=\"Eigenschaften\"\/&gt;\r\n           &lt;control idMso=\"FileNewDatabase\" label=\"Neu\"\/&gt;\r\n           &lt;control idMso=\"FileOpenDatabase\" label=\"&ouml;ffnen\"\/&gt;\r\n           &lt;control idMso=\"PrintDialogAccess\" label=\"Drucken\"\/&gt;\r\n         &lt;\/group&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;group id=\"grp2\" label=\"Test\"&gt;\r\n           &lt;button id=\"btnTest\" onAction=\"RunAddIn\" label=\"Test\" \r\n             tag=\"C:\\Users\\Andre\\AppData\\Roaming\\Microsoft\\AddIns\\RibbonAdmin2010.Autostart\" \/&gt;\r\n         &lt;\/group&gt;\r\n       &lt;\/tab&gt;\r\n     &lt;\/tabs&gt;\r\n   &lt;\/ribbon&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Beispiel f&uuml;r die Anpassung des Ribbons von Access<\/span><\/b><\/p>\n<p>Den Beginn macht das Schl&uuml;sselwort <b>[Access]<\/b>. Dies ist notwendig, da die DLL nicht nur das Ribbon von Access, sondern auch von anderen Office-Anwendungen wie Word, Excel oder PowerPoint anpassen kann.<\/p>\n<p>Den Abschnitt f&uuml;r die &uuml;brigen Anwendungen leiten Sie dann beispielsweise mit einem der Schl&uuml;sselw&ouml;rter <b>[Word]<\/b>, <b>[Excel] <\/b>oder <b>[PowerPoint] <\/b>ein.<\/p>\n<p>Das hier vorgestellte Beispiel f&uuml;gt dem tab-Element <b>TabHomeAccess <\/b>eine neue Gruppe hinzu, die direkt vor der Gruppe <b>Ansicht<\/b> eingef&uuml;gt werden soll (<b>insertBeforeMso=&#8220;GroupViews&#8220;<\/b>).<\/p>\n<p>Die neue Gruppe enth&auml;lt einige Befehle, die sonst nur im Office-Men&uuml; beziehungsweise im Backstage-Bereich enthalten sind finden. Nach dem Anwenden der neuen Ribbon-Definition sieht das <b>Start<\/b>-Tab von Access wie in Bild 1 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_05\/pic_904_003.png\" alt=\"Elemente des Office-Men&uuml;s oder Backstage-Bereichs im Start-Tab des Ribbons\" width=\"395\" height=\"157,2769\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Elemente des Office-Men&uuml;s oder Backstage-Bereichs im Start-Tab des Ribbons<\/span><\/b><\/p>\n<p><b>Erstellen-Tab entschlacken<\/b><\/p>\n<p>Das zweite Beispiel blendet alle eingebauten Elemente des <b>Erstellen<\/b>-Tabs aus und zeigt nur die jeweils zum Erstellen eines Objekts in der Entwurfsansicht n&ouml;tigen Elemente an (s. Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_05\/pic_904_004.png\" alt=\"Anpassung des Erstellen-Tabs auf die Belange eines professionellen Entwicklers - also ohne all die Assistenten et cetera\" width=\"570\" height=\"140,5153\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Anpassung des Erstellen-Tabs auf die Belange eines professionellen Entwicklers &#8211; also ohne all die Assistenten et cetera<\/span><\/b><\/p>\n<p>Dazu bezieht sich die Ribbon-Definition jeweils auf die eingebauten <b>group<\/b>-Elemente wie <b>GroupCreateTables<\/b>, <b>GroupCreateForms <\/b>et cetera und blendet diese durch Einstellen des Attributs <b>visible <\/b>auf den Wert <b>false <\/b>aus. Anschlie&szlig;end f&uuml;gt sie f&uuml;r jeden Objekttyp eine benutzerdefinierte Gruppe hinzu und legt darin jeweils die Schaltfl&auml;che zum Anlegen eines neuen Exemplars des jeweiligen Objekttyps ab &#8211; zum Beispiel <b>CreateTableInDesign-View <\/b>oder <b>CreateQueryInDesignView<\/b> (s. Listing 2).<\/p>\n<pre>[Access]\r\n&lt;xml version=\"1.0\" encoding=\"iso-8859-1\"&gt;\r\n&lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2006\/01\/customui\"&gt;\r\n   &lt;ribbon&gt;\r\n     &lt;tabs&gt;\r\n       &lt;tab idMso=\"TabCreate\"&gt;\r\n         &lt;group idMso=\"GroupCreateTables\" visible=\"false\"\/&gt;\r\n         &lt;group idMso=\"GroupCreateForms\" visible=\"false\"\/&gt;\r\n         &lt;group idMso=\"GroupCreateReports\" visible=\"false\"\/&gt;\r\n         &lt;group idMso=\"GroupCreateOther\" visible=\"false\"\/&gt;\r\n         &lt;group id=\"id30860\" label=\"Tabellen\"&gt;\r\n           &lt;control idMso=\"CreateTableInDesignView\" size=\"large\"\/&gt;\r\n         &lt;\/group&gt;\r\n         &lt;group id=\"id30861\" label=\"Abfragen\"&gt;\r\n           &lt;control idMso=\"CreateQueryInDesignView\" size=\"large\"\/&gt;\r\n         &lt;\/group&gt;\r\n         &lt;group id=\"id30862\" label=\"Formulare\"&gt;\r\n           &lt;control idMso=\"CreateFormInDesignView\" size=\"large\"\/&gt;\r\n         &lt;\/group&gt;\r\n         &lt;group id=\"id30863\" label=\"Berichte\"&gt;\r\n           &lt;control idMso=\"CreateReportInDesignView\" size=\"large\"\/&gt;\r\n         &lt;\/group&gt;\r\n         &lt;group id=\"id30865\" label=\"Makros\"&gt;\r\n           &lt;control idMso=\"CreateMacro\" size=\"large\"\/&gt;\r\n         &lt;\/group&gt;\r\n         &lt;group id=\"id30864\" label=\"VBA\"&gt;\r\n           &lt;control idMso=\"CreateModule\" description=\"large\" size=\"large\"\/&gt;\r\n           &lt;control idMso=\"CreateClassModule\" size=\"large\"\/&gt;\r\n         &lt;\/group&gt;\r\n       &lt;\/tab&gt;\r\n     &lt;\/tabs&gt;\r\n   &lt;\/ribbon&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Vereinfachte Erstellung von Access-Objekten &uuml;ber das Ribbon<\/span><\/b><\/p>\n<p><b>Schneller Zugriff auf neue Steuerelemente im Entwurf<\/b><\/p>\n<p>Eine weitere sinnvolle Erweiterung speziell ab Access 2010 ist eine ge&auml;nderte Darstellung der verf&uuml;gbaren Steuerelemente im Formularentwurf. Diese werden standardm&auml;&szlig;ig sehr klein und unvollst&auml;ndig angezeigt (s. Bild 3). F&uuml;r die Ansicht aller verf&uuml;gbaren Elemente muss man zun&auml;chst noch die Liste aufklappen. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_05\/pic_904_005.png\" alt=\"Ung&uuml;nstige Darstellung der Steuerelemente im Formularentwurf\" width=\"570\" height=\"140,2446\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Ung&uuml;nstige Darstellung der Steuerelemente im Formularentwurf<\/span><\/b><\/p>\n<p>Es w&auml;re doch gelacht, wenn wir diese Ansicht nicht entsprechend eindampfen k&ouml;nnten &#8211; sodass wie in Bild 4 alle Befehle zum Anlegen von Steuerelementen als kleine Symbole gleich neben dem Steuerelement zum Ausw&auml;hlen der Ansicht erscheinen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_05\/pic_904_006.png\" alt=\"Alle Steuerelemente im &uuml;berblick\" width=\"570\" height=\"153,4947\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Alle Steuerelemente im &uuml;berblick<\/span><\/b><\/p>\n<p>Dazu f&uuml;gen Sie die Zeilen aus Listing 3 zur Konfigurationsdatei hinzu. In diesem Beispiel blenden wir die komplette Gruppe mit der Beschriftung <b>Steuerelemente <\/b>aus, die den Namen <b>GroupControlsAccess <\/b>tr&auml;gt. Die Gruppe ist nicht Bestandteil eines herk&ouml;mmlichen eingebauten <b>tab<\/b>-Elements, sondern wird erst im Kontext der Entwurfsansicht eines Formulars eingeblendet. Wir ben&ouml;tigen daher unterhalb des <b>ribbon<\/b>-Elements zun&auml;chst das <b>contextualTabs<\/b>-Element und dann das <b>tabSet<\/b>-Element namens <b>TabSetFormTools<\/b>. Dieses wiederum enth&auml;lt das <b>tab<\/b>-Element <b>TabFormToolDesigns<\/b>, in dem sich die auszublendende Gruppe <b>GroupControlsAccess <\/b>befindet.<\/p>\n<pre>[Access]\r\n&lt;xml version=\"1.0\" encoding=\"iso-8859-1\"&gt;\r\n&lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2006\/01\/customui\"&gt;\r\n  &lt;ribbon&gt;\r\n     &lt;contextualTabs&gt;\r\n       &lt;tab<span style=\"color:blue;\">Set<\/span> idMso=\"TabSetFormTools\"&gt;\r\n         &lt;tab idMso=\"TabFormToolsDesign\"&gt;\r\n           &lt;group idMso=\"GroupControlsAccess\" visible=\"false\"\/&gt;\r\n           &lt;group id=\"grpSteuerelemente\" label=\"Steuerelemente\" \r\n               insertAfterMso=\"GroupViews\"&gt;\r\n     &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"FormControlEditBox\" label=\" \"\/&gt;\r\n     &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"FormControlLabel\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"FormControlButton\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlTabControl\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"HyperlinkInsert\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"WebBrowserControl\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"NavigationControl\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"FormControlGroupBox\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlPage\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"FormControlComboBox\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlChart\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlLine\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlToggleButton\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"FormControlListBox\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlRectangle\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"FormControlCheckBox\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlImage\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlAttachment\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"FormControlRadioButton\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlSubFormReport\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlBoundObjectFrame\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlUnboundObjectFrame\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlActiveX\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;    &lt;control idMso=\"ControlWizards\" label=\" \"\/&gt;\r\n  &nbsp;&nbsp;&nbsp;&nbsp;  &lt;\/group&gt;\r\n         &lt;\/tab&gt;\r\n       &lt;\/tabSet&gt;\r\n     &lt;\/contextualTabs&gt;\r\n     ....\r\n   &lt;\/ribbon&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Abbilden kleiner Symbole zum Anlegen von Steuerelementen<\/span><\/b><\/p>\n<p>Statt dieser Gruppe f&uuml;gen wir eine benutzerdefinierte Gruppe mit der Beschriftung <b>Steuerelemente <\/b>und dem Namen <b>grpSteuerelemente <\/b>hinzu.<\/p>\n<p>Sie enth&auml;lt jeweils ein <b>control<\/b>-Element f&uuml;r jedes anzuzeigende Steuerelement, wobei wir wieder auf eingebaute Steuerelemente zugreifen (zum Beispiel mit <b>idMso=EditBox <\/b>f&uuml;r das Textfeld).<\/p>\n<p>Da die Steuerelemente mit Beschriftung &auml;hnlich viel Platz einnehmen w&uuml;rden wie bei der eingebauten Variante, entfernen wir die Beschriftung. Daf&uuml;r stellen wir jeweils das Attribut <b>label <\/b>auf eine Zeichenkette ein, die lediglich ein Leerzeichen enth&auml;lt (<b>&#8220; &#8222;<\/b>). Eine leere Zeichenkette ist nicht zul&auml;ssig.<\/p>\n<p><b>Add-Ins starten<\/b><\/p>\n<p>Wir haben der DLL noch eine weitere Funktion hinzugef&uuml;gt, die besonders interessant ist: Normalerweise starten Sie Men&uuml;-Add-Ins &uuml;ber den Eintrag <b>Datenbanktools|Add-Ins|Add-Ins<\/b>. Wenn Sie ein Add-In verwenden und dieses von einem anderen Ort des Ribbons aus starten m&ouml;chten, k&ouml;nnen Sie das mit dem <b>InstantRibbonChanger <\/b>bewerkstelligen.<\/p>\n<p>Vielleicht verwenden Sie beispielsweise den <b>Ribbon-Admin 2010<\/b>, um Ihre Ribbons zu definieren. Dann k&ouml;nnten Sie mit dem InstantRibbonChanger einen Eintrag zum Aufrufen des <b>Ribbon-Admin 2010 <\/b>im <b>tab<\/b>-Element <b>Erstellen <\/b>unterbringen (alternativ bietet sich auch das Tab <b>Datenbanktools <\/b>an). Das Ergebnis sieht dann beispielsweise wie in Bild 5 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_05\/pic_904_007.png\" alt=\"Einf&uuml;gen eines neuen Ribbon-Elements zum Starten eines Add-Ins\" width=\"670\" height=\"226,6666\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Einf&uuml;gen eines neuen Ribbon-Elements zum Starten eines Add-Ins<\/span><\/b><\/p>\n<p>Der Inhalt der Konfigurationsdatei <b>InstantRibbonChanger.ini <\/b>sieht dann f&uuml;r den Access-Bereich etwa wie in Listing 4 aus. Die dortige Ribbon-Definition erweitert das <b>tab<\/b>-Element <b>TabCreate <\/b>um eine neue Gruppe mit der Beschriftung <b>Ribbon<\/b>. Das <b>button<\/b>-Element verwendet die folgenden Attribute, die f&uuml;r andere Access-Add-Ins &auml;hnlich zu belegen sind:<\/p>\n<pre>[Access]\r\n&lt;xml version=\"1.0\" encoding=\"iso-8859-1\"&gt;\r\n&lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2006\/01\/customui\" loadImage=\"loadImage\"&gt;\r\n   &lt;ribbon&gt;\r\n     &lt;tabs&gt;\r\n       &lt;tab idMso=\"TabCreate\"&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;group id=\"grpRibbon\" label=\"Ribbon\"&gt;\r\n           &lt;button id=\"btnRibbon\" onAction=\"RunAddIn\" size=\"large\" label=\"Ribbon-Admin\" \r\n             tag=\"C:\\Users\\Andre\\AppData\\Roaming\\Microsoft\\AddIns\\RibbonAdmin2010.Autostart\" image=\"window_black_32.png\"\/&gt;\r\n         &lt;\/group&gt;\r\n       &lt;\/tab&gt;\r\n     &lt;\/tabs&gt;\r\n   &lt;\/ribbon&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Ribbon-Erweiterung zum Aufruf einer Funktion eines Access-Add-Ins<\/span><\/b><\/p>\n<ul>\n<li><b>id<\/b>: Bezeichnung des <b>button<\/b>-Elements, hier <b>btnRibbon<\/b>.<\/li>\n<li><b>onAction<\/b>: Name der aufzurufenden Callback-Funktion. Muss hier unbedingt <b>RunAddIn <\/b>lauten.<\/li>\n<li><b>size<\/b>: In diesem Fall <b>large<\/b>.<\/li>\n<li><b>label<\/b>: Beschriftung des <b>button<\/b>-Elements, hier <b>Ribbon-Admin<\/b>.<\/li>\n<li><b>tag<\/b>: Gibt den Pfad und den Namen der aufzurufenden Add-In-Datei an, wobei die Dateiendung wegf&auml;llt und durch den Namen der VBA-Funktion ersetzt werden muss, die das Add-In startet. Im Zweifel finden Sie den Namen dieser Funktion im Registrierungseditor unter einem Zweig wie <b>HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\14.0\\Access\\Menu Add-Ins\\RibbonAdmin2010 <\/b>f&uuml;r die Eigenschaft <b>Expression <\/b>(in diesem Fall <b>=Autostart()<\/b>).<\/li>\n<li><b>image<\/b>: Name der Bilddatei, die f&uuml;r das <b>button<\/b>-Element angezeigt werden soll. Die Bilddatei muss sich im gleichen Verzeichnis wie die Datei <b>InstantRibbonChanger.ini <\/b>befinden.<\/li>\n<\/ul>\n<p>Sehr wichtig ist au&szlig;erdem, dass Sie f&uuml;r das Element <b>customUI <\/b>das Attribut <b>load-Image <\/b>mit dem Wert <b>loadImage <\/b>f&uuml;llen.<\/p>\n<p>Installieren des InstantRibbonChangers<\/p>\n<p>Kommen wir nun zum Installieren des COM-Add-Ins, das eigentlich nur aus dem Kopieren zweier Dateien in ein geeignetes Verzeichnis sowie der Registrierung der <b>.dll<\/b>-Datei besteht.<\/p>\n<p>Das Registrieren der DLL kann mitunter etwas hakelig sein. Da es aber nur f&uuml;r Sie als Entwickler gedacht ist und nicht f&uuml;r den Endnutzer der Anwendung, sollte dies nicht das Problem sein. Normalerweise registrieren Sie eine DLL, indem Sie diese in das gew&uuml;nschte Verzeichnis kopieren und diese dann mit dem Programm <b>RegSvr32.exe <\/b>registrieren. Dazu &ouml;ffnen Sie die Eingabeaufforderung von Windows, wechseln zum gew&uuml;nschten Verzeichnis und geben dort einen Befehl wie den folgenden ein:<\/p>\n<pre>Regsvr32.exe &lt;Name der Dll.dll&gt;<\/pre>\n<p>Unter neueren Windows-Versionen gelingt dies nicht mehr, sondern l&ouml;st den Fehler <b>80004005 <\/b>aus, der auf fehlende Berechtigungen f&uuml;r diesen Vorgang hinweist (s. Bild 6).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_05\/pic_904_002.png\" alt=\"Fehler beim Versuch, die DLL ohne Administratorrechte zu installieren\" width=\"570\" height=\"287,9468\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Fehler beim Versuch, die DLL ohne Administratorrechte zu installieren<\/span><\/b><\/p>\n<p>Kein Problem: Sie m&uuml;ssen einfach nur die Eingabeaufforderung als Administrator starten. Das erledigen Sie, indem Sie mit der rechten Maustaste auf den entsprechenden Eintrag im Startmen&uuml; von Windows klicken und dort den Befehl <b>Als Administrator ausf&uuml;hren <\/b>bet&auml;tigen (s. Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_05\/pic_904_001.png\" alt=\"Registrierung einer DLL in der als Administrator gestarteten Eingabeaufforderung\" width=\"570\" height=\"287,9468\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Registrierung einer DLL in der als Administrator gestarteten Eingabeaufforderung<\/span><\/b><\/p>\n<p><b>Registrierung unter Access 2013<\/b><\/p>\n<p>Office 2013 liefert nicht mehr die Datei <b>msaddnr.dll <\/b>mit, welche die f&uuml;r die Verwendung des beschriebenen Designers ben&ouml;tigten Elemente enth&auml;lt.<\/p>\n<p>Dies resultiert beim Versuch, die Datei <b>InstantRibbonChanger.dll <\/b>zu registrieren, zun&auml;chst wieder im Fehler <b>80004005<\/b> &#8211; auch dann, wenn Sie die Datei mit Administratorrechten registrieren.<\/p>\n<p>Dies l&auml;sst sich allerdings leicht korrigieren, indem Sie zun&auml;chst die Datei <b>msaddnr.dll <\/b>auf den Zielrechner kopieren und mit <b>Regsvr32.exe msaddnr.dll <\/b>registrieren (wiederum mit Administratorrechten, wenn n&ouml;tig).<\/p>\n<p>Danach k&ouml;nnen Sie dann wie gewohnt auch die Datei <b>InstantRibbonChanger.dll <\/b>registrieren.<\/p>\n<p><b>Programmieren der DLL<\/b><\/p>\n<p>Die DLL wurde mit dem guten, alten Visual Studio 6 programmiert. Wenn Sie selbst eine solche DLL programmieren oder die bestehende DLL &auml;ndern m&ouml;chten, gehen Sie wie nachfolgend beschrieben vor. Bet&auml;tigen Sie dort den Men&uuml;befehl <b>Datei|Neues Projekt <\/b>und klicken Sie dort auf <b>Addin<\/b> (s. Bild 8).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_05\/pic_904_008.png\" alt=\"Erstellen eines neuen Com-Add-Ins\" width=\"345\" height=\"228,1828\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Erstellen eines neuen Com-Add-Ins<\/span><\/b><\/p>\n<p><b>Verweise<\/b><\/p>\n<p>Das COM-Add-In ben&ouml;tigt zwei zus&auml;tzliche Verweise, die Sie &uuml;ber den <b>Verweise<\/b>-Dialog hinzuf&uuml;gen. Dieser ist im Gegensatz zu Access nicht unter <b>Extras|Verweise<\/b>, sondern unter <b>Projekt|Verweise <\/b>zu finden. Nach dem Hinzuf&uuml;gen der beiden Verweise <b>Microsoft Office x.0 Object Library <\/b>und <b>Microsoft Access x.0 Object Library <\/b>sieht der <b>Verweise<\/b>-Dialog des COM-Add-Ins wie in Bild 9 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_05\/pic_904_010.png\" alt=\"Der Verweise-Dialog mit zwei zus&auml;tzlichen Verweisen\" width=\"345\" height=\"285,5172\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Der Verweise-Dialog mit zwei zus&auml;tzlichen Verweisen<\/span><\/b><\/p>\n<p>Im Projekt-Explorer (<b>Strg + R<\/b>) finden Sie einen Eintrag namens <b>Designer|Connect<\/b>. W&auml;hlen Sie hier den Kontextmen&uuml;eintrag <b>Objekt anzeigen <\/b>aus. Stellen Sie die Eigenschaften dieses Dialogs wie folgt ein (s. Bild 10):<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2013_05\/pic_904_009.png\" alt=\"Einstellungen f&uuml;r den Connect-Designer\" width=\"570\" height=\"531,473\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Einstellungen f&uuml;r den Connect-Designer<\/span><\/b><\/p>\n<ul>\n<li><b>Angezeigter Name des Add-Ins<\/b>: <b>InstantRibbonChanger<\/b><\/li>\n<li><b>Add-In-Beschreibung<\/b>: Beschreibungstext wie in der Abbildung<\/li>\n<li><b>Anwendung<\/b>: <b>Microsoft Access<\/b><\/li>\n<li><b>Version der Anwendung<\/b>: Gew&uuml;nschte Version, hier <b>Microsoft Access 14 <\/b>f&uuml;r Access 2010<\/li>\n<li><b>Anf&auml;ngliches Ladeverhalten<\/b>: <b>Startup<\/b><\/li>\n<\/ul>\n<p>Mit dem Kontextmen&uuml;eintrag <b>Code anzeigen <\/b>des Eintrags <b>Designer|Connect <\/b>&ouml;ffnen Sie nun das zum Designer geh&ouml;rende Modul.<\/p>\n<p>Dort f&uuml;gen Sie nun die folgende Zeile hinzu und schlie&szlig;en die Eingabe mit der Eingabetaste ab:<\/p>\n<pre>Implements IRibbonExtensibility<\/pre>\n<p>Anschlie&szlig;end k&ouml;nnen Sie mit dem linken Kombinationsfeld des Codefensters den Eintrag <b>IRibbonExtensibility <\/b>ausw&auml;hlen und im rechten Kombinationsfeld den Eintrag <b>GetCustomUI<\/b>. Dies legt eine Prozedur namens <b>IRibbonExtensibility_GetCustomUI <\/b>an, die Sie wie in Listing 5 erg&auml;nzen.<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>IRibbonExtensibility_GetCustomUI(ByVal RibbonID<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As String<\/span>\r\n     IRibbonExtensibility_GetCustomUI = GetCustomUI(RibbonID)\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Laden einer Ribbon-Definition beim Start des Add-Ins<\/span><\/b><\/p>\n<p>Die Prozedur hat genau eine Aufgabe: Sie soll beim Start des Add-Ins, der durch den Start der angegebenen Office-Anwendung (hier Access) ausgel&ouml;st wird,  mithilfe der Funktion <b>GetCustomUI <\/b>die Definition der gew&uuml;nschten Ribbon-&auml;nderung einlesen und an Access &uuml;bergeben.<\/p>\n<p><b>RibbonID <\/b>&uuml;bergibt dabei eine Zeichenkette, welche die aufrufende Office-Anwendung charakterisiert &#8211; also beispielsweise <b>Microsoft.Access.Database <\/b>oder <b>Microsoft.Excel.Workbook<\/b>. <\/p>\n<p>Damit kommen wir zur Funktion <b>GetCustomUI<\/b>, die wir in einem separaten Standardmodul namens <b>mdlGlobal <\/b>anlegen (s. Listing 6).<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>GetCustomUI(RibbonID<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strRibbon<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strFile<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strObject<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strIni<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngPosStart<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngPosEnde<span style=\"color:blue;\"> As Long<\/span>\r\n     Select Case RibbonID\r\n         <span style=\"color:blue;\">Case <\/span>\"Microsoft.Word.Document\"\r\n             strObject = \"Word\"\r\n         <span style=\"color:blue;\">Case <\/span>\"Microsoft.PowerPoint.Presentation\"\r\n             strObject = \"PowerPoint\"\r\n         <span style=\"color:blue;\">Case <\/span>\"Microsoft.Excel.Workbook\"\r\n             strObject = \"Excel\"\r\n         <span style=\"color:blue;\">Case <\/span>\"Microsoft.Access.Database\"\r\n             strObject = \"Access\"\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n     strFile = App.Path & \"\\InstantRibbonChanger.ini\"\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(Dir(strFile)) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Die Ini-Datei des Instant Ribbon Changers ist nicht vorhanden.\" & <span style=\"color:blue;\">vbCrLf<\/span> _\r\n             & \"Die Datei wurde im Verzeichnis ''\" & App.Path & \"'' neu angelegt.\", vbOKOnly, _\r\n             \"InstantRibbonChanger (C) 2008-2013 A.Minhorst\"\r\n         strIni = GetXMLResource(\"InstantRibbonChanger.ini\")\r\n         Open strFile For Output<span style=\"color:blue;\"> As <\/span>#1\r\n         Print #1, strIni\r\n         Close #1\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     Open strFile For Input<span style=\"color:blue;\"> As <\/span>#1\r\n     strIni = Input$(LOF(1), #1)\r\n     Close #1\r\n     lngPosStart = <span style=\"color:blue;\">InStr<\/span>(1, strIni, \"[\" & strObject & \"]\") + 4 + <span style=\"color:blue;\">Len<\/span>(strObject)\r\n     lngPosEnde = <span style=\"color:blue;\">InStr<\/span>(lngPosStart + 1, strIni, \"[\")\r\n     <span style=\"color:blue;\">If <\/span>lngPosEnde = 0<span style=\"color:blue;\"> Then<\/span> lngPosEnde = <span style=\"color:blue;\">Len<\/span>(strIni)\r\n     strRibbon = <span style=\"color:blue;\">Mid<\/span>(strIni, lngPosStart, lngPosEnde - lngPosStart)\r\n     GetCustomUI = strRibbon\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 6: Die Funktion GetCustomUI liest die XML-Definition aus der Datei InstantRibbonChanger.ini ein.<\/span><\/b><\/p>\n<p>Diese Funktion nimmt den Wert f&uuml;r <b>RibbonID <\/b>entgegen und wertet diesen aus. Ist der Wert etwa <b>Microsoft.Access.Database<\/b>, speichert die Funktion den Wert <b>Access <\/b>in der Variablen <b>strObject<\/b>.<\/p>\n<p>Die Funktion liest dann den Inhalt der Datei <b>InstantRibbonChanger.ini <\/b>ein oder erstellt diese neu, sollte diese nicht vorhanden sein. In diesem Fall wird der Inhalt der neuen Datei aus einer Ressource des Projekts entnommen (wie dies funktioniert, sparen wir aus Platzgr&uuml;nden aus). Die Funktion sucht dann die Markierung, welche den Start der Ribbon-Definition f&uuml;r die jeweilige Anwendung markiert &#8211; in diesem Fall etwa <b>[Access]<\/b>.<\/p>\n<p>Das XML-Dokument zwischen diesem Platzhalter und vor der folgenden eckigen Klammer landet in der Variablen <b>strRibbon<\/b>, die wiederum als Wert der Funktion <b>GetCustomUI <\/b>zur&uuml;ckgegeben wird. Wegen der besonderen Bedeutung der eckigen Klammern beim Markieren der XML-Definitionen f&uuml;r die verschiedenen Office-Anwendungen d&uuml;rfen die XML-Dokumente selbst keine eckigen Klammern enthalten.<\/p>\n<p><b>Einsatz benutzerdefinierter Bilder<\/b><\/p>\n<p>Wenn Sie eigene Bilddateien in einem auf diese Weise erzeugten Ribbon anzeigen m&ouml;chten, speichern Sie diese im gleichen Verzeichnis wie die DLL und die Konfigurationsdatei. Geben Sie die Bildnamen f&uuml;r das Attribut <b>image <\/b>des jeweiligen Elements an und f&uuml;gen Sie dem <b>customUI<\/b>-Element das Attribut <b>loadImage <\/b>mit dem Wert <b>loadImage <\/b>hinzu. Die entsprechende Callback-Funktion sieht wie in Listing 7 aus und l&auml;dt das Bild mithilfe einer Funktion, die sich in einem weiteren Modul namens <b>mdlOGL0710 <\/b>befindet, das wir hier nicht n&auml;her erl&auml;utern.<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>LoadImage(imageId<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As <\/span>IPictureDisp\r\n     <span style=\"color:blue;\">Set<\/span> LoadImage = LoadPictureGDIP(App.Path & \"\\\" & imageId)\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 7: Die Funktion zum Laden eines Bildes f&uuml;r ein Ribbon-Element<\/span><\/b><\/p>\n<p><b>Add-Ins starten<\/b><\/p>\n<p>F&uuml;r das Starten von Access-Add-Ins sieht das COM-Add-In eine spezielle Callback-Funktion namens <b>RunAddIn <\/b>vor, die wie in Listing 8 aussieht. Die Funktion ist prinzipiell eine herk&ouml;mmliche Callback-Funktion, die wie &uuml;blich das Objekt <b>control <\/b>als Parameter entgegennimmt. Dieses liefert mit seinen Eigenschaften sowohl den Namen des Steuerelements, das die Callback-Funktion ausgel&ouml;st hat, als auch den Inhalt des Attributs <b>tag<\/b>. Dieses wird dann auch, wie weiter oben dargestellt, mit der Angabe des betroffenen Add-Ins sowie der enthaltenen Funktion gef&uuml;llt. Zusammen sollte &uuml;ber die <b>Tag<\/b>-Eigenschaft des <b>control<\/b>-Elements also beispielsweise ein Ausdruck wie <b>C:\\Users\\Andre\\AppData\\Roaming\\Microsoft\\AddIns\\RibbonAdmin2010.Autostart<\/b> &uuml;bergeben werden.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>RunAddIn(control<span style=\"color:blue;\"> As <\/span>IRibbonControl)\r\n     <span style=\"color:blue;\">Dim <\/span>strZiel<span style=\"color:blue;\"> As String<\/span>\r\n     strZiel = control.Tag\r\n     objAccess.Run \"\" & strZiel & \"\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 8: Diese Funktion startet ein Add-In.<\/span><\/b><\/p>\n<p>Die Prozedur <b>RunAddIn <\/b>startet dann mit der <b>Run<\/b>-Methode des Objekts <b>objAccess <\/b>die entsprechende Funktion des Add-Ins.<\/p>\n<p>Das Objekt <b>objAccess <\/b>liefert noch eine kleine H&uuml;rde: Sie soll einen Verweis auf das <b>Application<\/b>-Objekt der betroffenen Access-Instanz liefern. Dazu deklarieren wir im Modul <b>mdlGlobal <\/b>zun&auml;chst eine entsprechende Objektvariable:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>objAccess<span style=\"color:blue;\"> As <\/span>Access.Application<\/pre>\n<p>Wie und wann aber f&uuml;llen wir diese Objektvariable &#8211; das COM-Add-In wei&szlig; schlie&szlig;lich nur, dass es von einer Access-Instanz ge&ouml;ffnet wurde, aber nicht, von welcher.<\/p>\n<p>Dazu nutzen wir die Ereignisse des Objekts <b>AddinInstance<\/b>, das ebenfalls im Klassenmodul des <b>Connect<\/b>-Objekts bereitgestellt wird.<\/p>\n<p>Das gew&uuml;nschte Ereignis hei&szlig;t <b>OnConnection <\/b>und wird beim Verbinden von Access mit dem COM-Add-In gestartet.<\/p>\n<p>Um das Ereignis zu implementieren, w&auml;hlen Sie wiederum im linken Kombinationsfeld des Codefensters den Eintrag <b>AddinInstance <\/b>und rechts den Eintrag <b>OnConnection <\/b>aus.<\/p>\n<p>Die dadurch automatisch angelegte Ereignisprozedur f&uuml;llen Sie wie in Listing 9 mit einer Anweisung, die <b>objAccess <\/b>mit einem Verweis auf das &uuml;bergebene <b>Application<\/b>-Objekt f&uuml;llt.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>AddinInstance_OnConnection(ByVal Application<span style=\"color:blue;\"> As Object<\/span>, ByVal ConnectMode<span style=\"color:blue;\"> As <\/span>AddInDesignerObjects._\r\n         ext_ConnectMode, ByVal AddInInst<span style=\"color:blue;\"> As Object<\/span>, custom()<span style=\"color:blue;\"> As Variant<\/span>)\r\n     <span style=\"color:blue;\">Set<\/span> objAccess = Application\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 9: F&uuml;llen der Objektvariablen objAccess mit einem Verweis auf das Application-Objekt von Access<\/span><\/b><\/p>\n<p><b>DLL erstellen<\/b><\/p>\n<p>Fertig &#8211; Sie m&uuml;ssen das Projekt nun nur noch kompilieren und so die gew&uuml;nschte DLL-Datei erstellen. Dies erledigen Sie &uuml;ber den Men&uuml;punkt <b>DateiIInstant-RibbonChanger.dll <\/b>erstellen. Dabei wird die DLL automatisch registriert &#8211; eine manuelle Registrierung ist erst f&uuml;r die Installation auf weiteren Rechnern n&ouml;tig.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Sie k&ouml;nnen mit diesem COM-Add-In beliebige Anpassungen der eingebauten Ribbon-Elemente vornehmen.<\/p>\n<p>Noch interessanter wird es nat&uuml;rlich, wenn Sie etwa Schaltfl&auml;chen unterbringen, um die in Add-Ins enthaltenen Funktionen aufzurufen.<\/p>\n<p>Dazu k&ouml;nnen Sie durchaus auch ein einziges Add-In mit mehreren Funktionen ausstatten. Wie dies gelingt, erfahren Sie im Beitrag <b>Multi-Add-Ins mit Access <\/b>(<b>www.access-im-unternehmen.de\/908<\/b>).<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>InstantRibbonChanger.zip<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{7170C870-CE05-4B93-9337-B28E51FADA1C}\/aiu_904.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt verschiedene Wege, das Access-Ribbon anzupassen &#8211; und diese variieren auch noch von der jeweils verwendeten Access-Version. Dies gilt f&uuml;r allem f&uuml;r die M&ouml;glichkeiten, das Ribbon von Access global direkt &uuml;ber die Benutzeroberfl&auml;che anzupassen &#8211; hier entwickelt sich Access von Version zu Version weiter. Globale Anpassung meint solche &Auml;nderungen, die unabh&auml;ngig von der aktuell geladenen Anwendung durchgef&uuml;hrt werden sollen und somit etwa Elemente der Entwicklungsumgebung ansteuern sollen. Dieser Beitrag zeigt eine Erweiterung, mit der Sie die gew&uuml;nschten &Auml;nderungen dauerhaft anwenden k&ouml;nnen.<\/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":[662013,66052013,44000028],"tags":[],"class_list":["post-55000904","post","type-post","status-publish","format-standard","hentry","category-662013","category-66052013","category-Ergonomie_und_Benutzeroberflaeche"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Globale Ribbon-Anpassung - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Globale Ribbon-Anpassung\" \/>\n<meta property=\"og:description\" content=\"Es gibt verschiedene Wege, das Access-Ribbon anzupassen - und diese variieren auch noch von der jeweils verwendeten Access-Version. Dies gilt f&uuml;r allem f&uuml;r die M&ouml;glichkeiten, das Ribbon von Access global direkt &uuml;ber die Benutzeroberfl&auml;che anzupassen - hier entwickelt sich Access von Version zu Version weiter. Globale Anpassung meint solche &Auml;nderungen, die unabh&auml;ngig von der aktuell geladenen Anwendung durchgef&uuml;hrt werden sollen und somit etwa Elemente der Entwicklungsumgebung ansteuern sollen. Dieser Beitrag zeigt eine Erweiterung, mit der Sie die gew&uuml;nschten &Auml;nderungen dauerhaft anwenden k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:30:44+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/ccacd296703149dfae23c196114dba5e\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"18\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Globale Ribbon-Anpassung\",\"datePublished\":\"2020-05-22T21:30:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/\"},\"wordCount\":2579,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/ccacd296703149dfae23c196114dba5e\",\"articleSection\":[\"2013\",\"5\\\/2013\",\"Ergonomie und Benutzeroberfl\u00e4che\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/\",\"name\":\"Globale Ribbon-Anpassung - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/ccacd296703149dfae23c196114dba5e\",\"datePublished\":\"2020-05-22T21:30:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/ccacd296703149dfae23c196114dba5e\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/ccacd296703149dfae23c196114dba5e\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Globale_RibbonAnpassung\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Globale Ribbon-Anpassung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Globale Ribbon-Anpassung - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/","og_locale":"de_DE","og_type":"article","og_title":"Globale Ribbon-Anpassung","og_description":"Es gibt verschiedene Wege, das Access-Ribbon anzupassen - und diese variieren auch noch von der jeweils verwendeten Access-Version. Dies gilt f&uuml;r allem f&uuml;r die M&ouml;glichkeiten, das Ribbon von Access global direkt &uuml;ber die Benutzeroberfl&auml;che anzupassen - hier entwickelt sich Access von Version zu Version weiter. Globale Anpassung meint solche &Auml;nderungen, die unabh&auml;ngig von der aktuell geladenen Anwendung durchgef&uuml;hrt werden sollen und somit etwa Elemente der Entwicklungsumgebung ansteuern sollen. Dieser Beitrag zeigt eine Erweiterung, mit der Sie die gew&uuml;nschten &Auml;nderungen dauerhaft anwenden k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:30:44+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/ccacd296703149dfae23c196114dba5e","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"18\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Globale Ribbon-Anpassung","datePublished":"2020-05-22T21:30:44+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/"},"wordCount":2579,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/ccacd296703149dfae23c196114dba5e","articleSection":["2013","5\/2013","Ergonomie und Benutzeroberfl\u00e4che"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/","url":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/","name":"Globale Ribbon-Anpassung - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/ccacd296703149dfae23c196114dba5e","datePublished":"2020-05-22T21:30:44+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/ccacd296703149dfae23c196114dba5e","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/ccacd296703149dfae23c196114dba5e"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Globale_RibbonAnpassung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Globale Ribbon-Anpassung"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000904"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000904\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}