{"id":55001438,"date":"2023-06-01T00:00:00","date_gmt":"2023-06-17T09:29:52","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1438"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Ribbon_Controls_erkennen_und_ausblenden","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/","title":{"rendered":"Ribbon: Controls erkennen und ausblenden"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/a7b75be9bb094a6f9eb630366c7eff92\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Das Dateimen&uuml; von Access bietet eine ganze Reihe praktischer Elemente. Diese sind im Alltagsgebrauch eines Entwicklers sehr hilfreich, bieten sie doch schnellen Zugriff auf wichtige Funktionen. Wollen wir eine Anwendung entwickeln und diese an den Benutzer weitergeben, sollen jedoch unter Umst&auml;nden gar nicht all diese Befehle verf&uuml;gbar sein. Vielleicht wollen wir zus&auml;tzlich oder statt dieser Eintr&auml;ge sogar eigene Elemente hinzuf&uuml;gen, beispielsweise f&uuml;r das Speichern von Anwendungsoptionen. In diesem Fall ist der erste Schritt, einen oder mehrere der vorhandenen Eintr&auml;ge auszublenden. Wie das gelingt, zeigen wir in diesem Beitrag.<\/b><\/p>\n<p>Genau wie die Elemente des Ribbons k&ouml;nnen wir auch die Eintr&auml;ge im Backstage-Bereich manipulieren, indem wir diese ausblenden, erg&auml;nzen oder ihre Funktion ver&auml;ndern.<\/p>\n<p>Standardm&auml;&szlig;ig finden wir hier einige hilfreiche Funktionen, die wir in Bild 1 sehen &#8211; hier am Beispiel von Access in der Version, die mit Microsoft 365 geliefert wird.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1438_001.png\" alt=\"Das Dateimen&uuml; von Microsoft Access\" width=\"649,559\" height=\"535,6635\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Das Dateimen&uuml; von Microsoft Access<\/span><\/b><\/p>\n<p>In den folgenden Abschnitten schauen wir uns an, wie wir die eingebauten Elemente f&uuml;r die hier verwendete Access-Version ausblenden k&ouml;nnen. Das erledigen wir wie folgt:<\/p>\n<ul>\n<li>Erstellen einer Tabelle zum Speichern der ben&ouml;tigten Ribbondefinition<\/li>\n<li>Zusammenstellen der Ribbondefinition und Speichern der Definition in der Tabelle<\/li>\n<li>Einstellen der Ribbondefinition als Anwendungsribbon<\/li>\n<\/ul>\n<h2>Tabelle f&uuml;r die Ribbondefinition<\/h2>\n<p>Die Tabelle f&uuml;r die Ribbondefinition legen wir unter dem Namen <b>USysRibbons <\/b>an. Sie enth&auml;lt drei Felder: <b>RibbonID <\/b>(Autowert, Prim&auml;rschl&uuml;sselfeld), <b>RibbonName <\/b>(kurzer Text) und <b>RibbonXML <\/b>(langer Text). Nach dem Anlegen und Speichern verschwindet diese Tabelle scheinbar im Nirwana &#8211; zumindest wird sie normalerweise nicht im Navigationsbereich angezeigt. Das ist jedoch so gewollt: Der Name der Tabelle beginnt mit <b>USys&#8230;<\/b> &#8211; und damit interpretiert Access, dass es sich um eine Systemtabelle handelt, die nicht angezeigt werden soll. Um diese zu sehen, aktivieren wir die Anzeige der Systemtabellen. Dazu klicken wir mit der rechten Maustaste auf die Titelleiste des Navigationsbereichs und w&auml;hlen aus dem Kontextmen&uuml; den Eintrag <b>Navigationsoptionen&#8230;<\/b> aus. Im nun erscheinenden Dialog aktivieren wir die Option <b>Systemobjekte anzeigen<\/b>.<\/p>\n<p>Nun &ouml;ffnen wir die Tabelle und f&uuml;gen einen neuen Datensatz wie in Bild 2 ein.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1438_002.png\" alt=\"Tabelle mit der Ribbondefinition zum Leeren des Dateimen&uuml;s\" width=\"700\" height=\"331,3333\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Tabelle mit der Ribbondefinition zum Leeren des Dateimen&uuml;s<\/span><\/b><\/p>\n<h2>Ribbondefinition zusammenstellen<\/h2>\n<p>Diesem f&uuml;gen wir im Feld <b>RibbonXML<\/b> den Code aus Listing 1 hinzu. Er enth&auml;lt ein <b>customUI<\/b>-Element, dem direkt das <b>backstage<\/b>-Element untergeordnet ist. Unmittelbar im <b>backstage<\/b>-Element finden wir dann verschiedene Definitionen f&uuml;r <b>tab<\/b>&#8211; beziehungsweise <b>button<\/b>-Elemente.<\/p>\n<pre>&lt;?xml version=\"1.0\"?&gt;\r\n   &lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2009\/07\/customui\"&gt;\r\n   &lt;backstage&gt;\r\n     &lt;tab idMso=\"PlaceTabHome\" visible=\"false\" \/&gt;\r\n     &lt;tab idMso =\"TabOfficeStart\" visible=\"false\" \/&gt;\r\n     &lt;tab idMso=\"TabRecent\" visible=\"false\" \/&gt;\r\n     &lt;tab idMso =\"TabInfo\" visible=\"false\"\/&gt;\r\n     &lt;button idMso=\"FileSave\" visible=\"false\"\/&gt;\r\n     &lt;tab idMso =\"TabSave\" visible=\"false\" \/&gt;\r\n     &lt;tab idMso =\"TabPrint\" visible=\"false\"\/&gt;\r\n     &lt;button idMso=\"FileCloseDatabase\" visible=\"false\"\/&gt;\r\n     &lt;tab idMso=\"TabHelp\" visible=\"false\" \/&gt;\r\n     &lt;tab idMso=\"TabOfficeFeedback\" visible=\"false\" \/&gt;\r\n     &lt;button idMso=\"ApplicationOptionsDialog\" visible=\"false\"\/&gt;\r\n   &lt;\/backstage&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Ausblenden der Dateimen&uuml;-Eintr&auml;ge<\/span><\/b><\/p>\n<p>Im Gegensatz zu fr&uuml;heren Access-Versionen kann man im Dateimen&uuml; nicht mehr erkennen, ob es sich bei einem Eintrag um ein <b>button<\/b>&#8211; oder ein <b>tab<\/b>-Element handelt.<\/p>\n<p>Der Unterschied ist, dass das <b>button<\/b>-Element direkt eine Aktion ausl&ouml;st und das <b>tab<\/b>-Element den entsprechenden Bereich rechts &ouml;ffnet.<\/p>\n<p>Wie aber finden wir nun heraus, welche <b>idMso<\/b> zu den angezeigten Eintr&auml;gen im Dateimen&uuml; geh&ouml;rt? F&uuml;r die <b>idMsos <\/b>gibt es Excel-Tabellen mit allen Elementen. Wir haben uns ein wenig Arbeit gemacht und diese manuell ermittelt. Dabei haben wir die folgenden Zuordnungen gefunden, die zum Teil nicht gerade intuitiv zu finden sind:<\/p>\n<ul>\n<li><b>PlaceTabHome<\/b>: <b>Startseite<\/b><\/li>\n<li><b>TabOfficeStart<\/b>: <b>Neu<\/b><\/li>\n<li><b>TabRecent<\/b>: <b>&Ouml;ffnen<\/b><\/li>\n<li><b>TabInfo<\/b>: <b>Informationen<\/b><\/li>\n<li><b>FileSave<\/b>: <b>Speichern<\/b><\/li>\n<li><b>TabSave<\/b>: <b>Speichern unter<\/b><\/li>\n<li><b>TabPrint<\/b>: <b>Drucken<\/b><\/li>\n<li><b>FileCloseDatabase<\/b>: <b>Schlie&szlig;en<\/b><\/li>\n<li><b>TabHelp<\/b>: <b>Konto<\/b><\/li>\n<li><b>TabOfficeFeedback<\/b>: <b>Feedback<\/b><\/li>\n<li><b>ApplicationOptionsDialog<\/b>: <b>Optionen<\/b><\/li>\n<\/ul>\n<p>Die Zuordnung kann man vereinfachen, indem man mit einem kleinen Trick arbeitet und die Excel-Tabelle mit der Liste der Ribbon-Steuerelemente nutzt. Diese haben wir aus der Excel-Datei als neue Tabelle namens <b>tblAccessControls <\/b>zur Beispieldatenbank hinzugef&uuml;gt. Sie sieht nach dem Import wie in Bild 3 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1438_003.png\" alt=\"Daten von Ribbon-Elementen in einer Tabelle\" width=\"700\" height=\"324,0903\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Daten von Ribbon-Elementen in einer Tabelle<\/span><\/b><\/p>\n<p>Was machen wir nun mit den Daten dieser Tabelle? Wir k&ouml;nnen anhand des Steuerelementtyps und des TabSets erkennen, welche Elemente infrage kommen.<\/p>\n<p>Um zu identifizieren, welches Element der Tabelle welchem Element im Ribbon entspricht, wenden wir den folgenden Trick an:<\/p>\n<p>Wir definieren die eingebauten Elemente so um, dass sie statt der eingebauten Bezeichnung die <b>idMso <\/b>anzeigen. Das wollen wir nicht von Hand erledigen, sondern wir verwenden eine Prozedur dazu. Diese finden Sie in Listing 2.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>CreateXMLBackstage()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rst<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>strRibbon<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(\"SELECT * FROM tblAccessControls WHERE Tab<span style=\"color:blue;\">Set<\/span> = ''None (Backstage View)'' \" _\r\n         & \"AND Tab IS NULL AND ControlType IN (''button'', ''tab'')\", dbOpenDynaset)\r\n     strRibbon = strRibbon & \"&lt;?xml version=\"\"1.0\"\"?&gt;\" & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     strRibbon = strRibbon & \"&lt;customUI xmlns=\"\"http:\/\/schemas.microsoft.com\/office\/2009\/07\/customui\"\"&gt;\" & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     strRibbon = strRibbon & \"  &lt;backstage&gt;\" & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> rst.EOF\r\n         strRibbon = strRibbon & \"    &lt;\" & rst!ControlType & \" idMso=\"\"\" & rst!ControlName & \"\"\" label=\"\"\" _\r\n             & rst!ControlName & \"\"\" \/&gt;\" & <span style=\"color:blue;\">vbCrLf<\/span>\r\n         rst.Move<span style=\"color:blue;\">Next<\/span>\r\n     <span style=\"color:blue;\">Loop<\/span>\r\n     strRibbon = strRibbon & \"  &lt;\/backstage&gt;\" & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     strRibbon = strRibbon & \"&lt;\/customUI&gt;\" & <span style=\"color:blue;\">vbCrLf<\/span>\r\n     DoCmd.Close acTable, \"USysRibbons\"\r\n     db.Execute \"UPDATE USysRibbons SET RibbonXML = ''\" & strRibbon & \"'' WHERE RibbonName = ''ClearBackstage''\", _\r\n         dbFailOnError\r\n     <span style=\"color:blue;\">If <\/span>db.RecordsAffected = 0<span style=\"color:blue;\"> Then<\/span>\r\n         db.Execute \"INSERT INTO USysRibbons(RibbonName, RibbonXML) VALUES(''ClearBackstage'', ''\" & strRibbon & \"'')\", _\r\n             dbFailOnError\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>[<\/p>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Prozedur zum Zusammenstellen von neuen Bezeichnungen<\/span><\/b><\/p>\n<p>Die Prozedur erstellt ein Recordset auf Basis der Tabelle <b>tblAccessControls <\/b>und ruft alle Datens&auml;tze ab, deren Feld <b>TabSet <\/b>den Wert <b>None (Backstage View) <\/b>enth&auml;lt, deren Feld <b>Tab <\/b>den Wert <b>Null <\/b>hat und wo <b>ControlType <\/b>einen der Werte <b>button <\/b>oder <b>tab <\/b>enth&auml;lt.<\/p>\n<p>Diese Datensatzgruppe durchlaufen wir in einer <b>Do While<\/b>-Schleife und stellen innerhalb dieser Schleife Anweisungen wie diese zusammen:<\/p>\n<pre>&lt;tab idMso=\"\"TabInfo\"\" label=\"\"TabInfo\"\" \/&gt;<\/pre>\n<p>Zuvor haben wir in der Variablen <b>strRibbon<\/b>, in der wir die Ribbondefinition zusammenstellen, schon ein <b>customUI<\/b>&#8211; und ein <b>backstage<\/b>-Element erstellt. Nachdem wir die Schleife durchlaufen haben, erg&auml;nzen wir noch die schlie&szlig;enden Elemente.<\/p>\n<p>Das Ergebnis schreiben wir in die Tabelle <b>USysRibbons<\/b>. Entweder ist dort bereits ein Datensatz vorhanden, dem wir im Feld <b>RibbonName <\/b>den Namen <b>ClearBackstage <\/b>zugewiesen haben &#8211; dann ist die erste <b>Execute<\/b>-Anweisung erfolgreich und die folgende Anweisung liefert f&uuml;r <b>db.RecordsAffected <\/b>einen Wert ungleich <b>0<\/b>.<\/p>\n<p>Konnte die Prozedur mit der ersten Anweisung keinen Datensatz bearbeiten, legen wir diesen mit der folgenden Anweisung einfach neu an.<\/p>\n<p>Das Ergebnis sehen wir in Listing 3. Damit war der Gro&szlig;teil der Aufgabe erledigt &#8211; allerdings kommt ein Element nicht in der Excel-Tabelle vor. Dabei handelt es sich um das Element <b>PlaceTabHome<\/b>. Dieses haben wir der Tabelle <b>tblAccessControls <\/b>der Beispieldatenbank jedoch noch hinzugef&uuml;gt, sodass die Prozedur von oben nun das korrekte Ergebnis liefert.<\/p>\n<pre>&lt;?xml version=\"1.0\"?&gt;\r\n&lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2009\/07\/customui\"&gt;\r\n   &lt;backstage&gt;\r\n     &lt;tab idMso=\"TabInfo\" label=\"TabInfo\" \/&gt;\r\n     &lt;tab idMso=\"TabOfficeStart\" label=\"TabOfficeStart\" \/&gt;\r\n     &lt;tab idMso=\"TabRecent\" label=\"TabRecent\" \/&gt;\r\n     &lt;button idMso=\"FileSave\" label=\"FileSave\" \/&gt;\r\n     &lt;tab idMso=\"TabSave\" label=\"TabSave\" \/&gt;\r\n     &lt;tab idMso=\"TabPrint\" label=\"TabPrint\" \/&gt;\r\n     &lt;button idMso=\"FileCloseDatabase\" label=\"FileCloseDatabase\" \/&gt;\r\n     &lt;tab idMso=\"TabHelp\" label=\"TabHelp\" \/&gt;\r\n     &lt;button idMso=\"ApplicationOptionsDialog\" label=\"ApplicationOptionsDialog\" \/&gt;\r\n   &lt;\/backstage&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Automatisch erstellt Ribbondefinition<\/span><\/b><\/p>\n<p>Was haben wir davon? Das sehen wir, wenn wir die Datenbank nun schlie&szlig;en und erneut &ouml;ffnen und zum Dateimen&uuml; wechseln. Dieses zeigt nun n&auml;mlich die <b>idMso<\/b>-Bezeichnungen der Steuerelemente statt der eigentlichen Beschriftungen an (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1438_004.png\" alt=\"Ersetzen der Beschriftungen im Dateimen&uuml;\" width=\"474,5589\" height=\"543,504\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Ersetzen der Beschriftungen im Dateimen&uuml;<\/span><\/b><\/p>\n<h2>Umbenennung f&uuml;r andere Elemente nutzen<\/h2>\n<p>Wenn Sie h&auml;ufiger Anpassungen am Ribbon vornehmen und sich dabei an den eingebauten Elementen orientieren, um entweder neue Elemente vor oder hinter den eingebauten Elementen anzulegen, um eingebaute Elemente auszublenden oder um ihre Funktion zu &auml;ndern, fragen Sie sich vielleicht, ob wir die obige Vorgehensweise auch f&uuml;r die Elemente des Ribbons nutzen k&ouml;nnen. Das gelingt zumindest f&uuml;r die <b>Tab<\/b>-Elemente:<\/p>\n<pre>&lt;?xml version=\"1.0\"?&gt;\r\n&lt;customUI xmlns=\"http:\/\/schemas.microsoft.com\/office\/2009\/07\/customui\"&gt;\r\n   &lt;ribbon&gt;\r\n     &lt;tabs&gt;\r\n       &lt;tab idMso=\"TabPrintPreviewAccess\"           label=\"TabPrintPreviewAccess\" \/&gt;\r\n       &lt;tab idMso=\"TabHomeAccess\" label=\"TabHomeAccess\" \/&gt;\r\n       &lt;tab idMso=\"TabCreate\" label=\"TabCreate\" \/&gt;\r\n       &lt;tab idMso=\"TabExternalData\"           label=\"TabExternalData\" \/&gt;\r\n       &lt;tab idMso=\"TabDatabaseTools\"           label=\"TabDatabaseTools\" \/&gt;\r\n       &lt;tab idMso=\"TabSourceControl\" \r\n           label=\"TabSourceControl\" \/&gt;\r\n       &lt;tab idMso=\"TabAddIns\" label=\"TabAddIns\" \/&gt;\r\n     &lt;\/tabs&gt;\r\n   &lt;\/ribbon&gt;\r\n&lt;\/customUI&gt;<\/pre>\n<p>Allerdings fehlt auch hier ein Element, n&auml;mlich das <b>Hilfe<\/b>-Tab. Der Wert des Attributs <b>idMso <\/b>f&uuml;r dieses Element lautet entgegen der &uuml;blichen Benennungskonvention <b>HelpTab<\/b>.<\/p>\n<p>Dieses erg&auml;nzen wir noch wie folgt:<\/p>\n<pre>&lt;tab idMso=\"HelpTab\" label=\"HelpTab\" \/&gt;<\/pre>\n<p>Damit erhalten wir die Darstellung aus Bild 5.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1438_005.png\" alt=\"&Auml;ndern der Beschriftung in die idMso-Werte\" width=\"700\" height=\"150,7812\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: &Auml;ndern der Beschriftung in die idMso-Werte<\/span><\/b><\/p>\n<p>Wie aber kommen wir an die Bezeichnung f&uuml;r ein Element wie das <b>Hilfe<\/b>-Tab, wenn es noch nicht einmal in der offiziellen Excel-Tabelle mit den Ribbon-Controls steht &#8211; und warum fehlt es dort &uuml;berhaupt? Der Grund, warum es fehlt, ist die wohl mangelnde Aktualit&auml;t dieser Tabellen. In neueren Versionen hinzugef&uuml;gte Ribbon-Elemente wurden schlicht noch nicht in der Dokumentation ber&uuml;cksichtigt.<\/p>\n<p>Der Weg, um den Namen eines solchen Elements herauszufinden, ist das &Auml;ndern des betroffenen Elements beispielsweise durch Ausblenden &uuml;ber die Benutzeroberfl&auml;che und das anschlie&szlig;ende Exportieren der &Auml;nderungen in Form einer XML-Datei.<\/p>\n<p>Das erledigen wir wie folgt im Bereich <b>Men&uuml;band anpassen <\/b>des Optionen-Dialogs von Access:<\/p>\n<ul>\n<li>&Ouml;ffnen Sie den Optionen-Dialog.<\/li>\n<li>Wechseln Sie zum Bereich <b>Men&uuml;band anpassen<\/b>.<\/li>\n<li>Blenden Sie den Eintrag, dessen <b>idMso <\/b>Sie erfahren wollen, durch Entfernen der Markierung aus &#8211; hier den Eintrag <b>Hilfe<\/b>.<\/li>\n<li>W&auml;hlen Sie den Befehl <b>Importieren\/Exportieren|AlleAnpassungen exportieren <\/b>aus (siehe Bild 6). <\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1438_006.png\" alt=\"Speichern von &Auml;nderungen am Ribbon\" width=\"700\" height=\"507,0511\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Speichern von &Auml;nderungen am Ribbon<\/span><\/b><\/p>\n<\/ul>\n<p>Danach &ouml;ffnen wir die exportierte Datei in einem geeigneten Programm wie Visual Studio und erhalten die Datei aus Bild 7. Der Name des Elements lautet <b>HelpTab<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1438_007.png\" alt=\"Ablesen des Namens eines tab-Elements im Export\" width=\"649,559\" height=\"204,2242\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Ablesen des Namens eines tab-Elements im Export<\/span><\/b><\/p>\n<h2>Namen weiterer Elemente ermitteln<\/h2>\n<p>Wir haben noch weiter experimentiert, ob man auf diese Weise auch die Namen der &uuml;brigen Elemente direkt im Ribbon ablesen kann. Leider lassen sich die <b>label<\/b>-Attribute der <b>group<\/b>-Elemente und die darin enthaltenen Steuerelemente nicht anpassen. In diesem Fall w&uuml;rde man auf die bew&auml;hrte Methode zur&uuml;ckgreifen, im Bereich <b>Men&uuml;band anpassen <\/b>der Access-Optionen mit der Maus &uuml;ber den gew&uuml;nschten Eintrag zu fahren und den Namen aus dem ToolTip-Text auszulesen (siehe Bild 8).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1438_008.png\" alt=\"Auslesen des Namens eines Ribbon-Steuerelements\" width=\"649,559\" height=\"330,9252\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Auslesen des Namens eines Ribbon-Steuerelements<\/span><\/b><\/p>\n<p>Bei den <b>group<\/b>-Elementen greifen wir auf die zuvor beschriebene Methode zur&uuml;ck, bei der wir die gew&uuml;nschten Elemente unter <b>Men&uuml;band anpassen<\/b> als ausgeblendet markieren und dann im Export der &Auml;nderungen die Namen auslesen.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Beitrag sollte eigentlich nur zeigen, wie wir die Eintr&auml;ge des Dateimen&uuml;s in Access ausblenden. Bei der Frage, wie wir die <b>idMso<\/b>-Namen der auszublendenden Elemente ermitteln, haben wir dann allerdings noch etwas weiter geforscht und uns angesehen, wie wir mit der Excel-Datei mit der &Uuml;bersicht der Ribbon-Steuerelemente arbeiten k&ouml;nnen.<\/p>\n<p>Diese haben wir in eine Access-Tabelle importiert. Damit haben wir die Grundlage geschaffen, die Elemente systematisch mithilfe einer Prozedur zu durchlaufen und die gew&uuml;nschten Informationen f&uuml;r viele Elemente zu erhalten.<\/p>\n<p>Um auch noch einen komfortableren Weg zu finden, um die Namen von Gruppen und den enthaltenen Steuerelementen zu ermitteln, sind wir noch einen Schritt weitergegangen und haben eine Prozedur entwickelt, die alle Eintr&auml;ge der Tabelle mit den Ribbon-Steuerelementen durchl&auml;uft und jeweils neben einer Gruppe die Gruppe nachbaut &#8211; diesmal mit den Werten der <b>idMso <\/b>als Wert f&uuml;r das Attribut <b>label<\/b>.<\/p>\n<p>Diese Prozedur finden Sie im Modul <b>mdlRibbonControls <\/b>der Beispieldatenbank unter dem Namen <b>CreateXMLAlle<\/b>.<\/p>\n<p>Das Ergebnis sieht wie in Bild 9 aus. Auch wenn wir hier noch nicht alle Steuerelementtypen ber&uuml;cksichtigt haben, kann man sich durchaus eine Datenbank erstellen, welche die Elemente wie in diesem Ribbon enth&auml;lt und schnell nachsehen, wie bestimmte Elemente hei&szlig;en.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1438_009.png\" alt=\"Originalbeschriftungen und daneben die idMso-Werte als Beschriftung\" width=\"649,559\" height=\"209,6855\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Originalbeschriftungen und daneben die idMso-Werte als Beschriftung<\/span><\/b><\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Access_AlleRibbonElementeImDateimenUeAusblenden.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/1DE33B47-FC62-4DA3-868D-6F35BB215B59\/aiu_1438.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Dateimen&uuml; von Access bietet eine ganze Reihe praktischer Elemente. Diese sind im Alltagsgebrauch eines Entwicklers sehr hilfreich, bieten sie doch schnellen Zugriff auf wichtige Funktionen. Wollen wir eine Anwendung entwickeln und diese an den Benutzer weitergeben, sollen jedoch unter Umst&auml;nden gar nicht all diese Befehle verf&uuml;gbar sein. Vielleicht wollen wir zus&auml;tzlich oder statt dieser Eintr&auml;ge sogar eigene Elemente hinzuf&uuml;gen, beispielsweise f&uuml;r das Speichern von Anwendungsoptionen. In diesem Fall ist der erste Schritt, einen oder mehrere der vorhandenen Eintr&auml;ge auszublenden. Wie das gelingt, zeigen wir in diesem Beitrag.<\/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":[662023,66032023,44000028],"tags":[],"class_list":["post-55001438","post","type-post","status-publish","format-standard","hentry","category-662023","category-66032023","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>Ribbon: Controls erkennen und ausblenden - 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\/Ribbon_Controls_erkennen_und_ausblenden\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ribbon: Controls erkennen und ausblenden\" \/>\n<meta property=\"og:description\" content=\"Das Dateimen&uuml; von Access bietet eine ganze Reihe praktischer Elemente. Diese sind im Alltagsgebrauch eines Entwicklers sehr hilfreich, bieten sie doch schnellen Zugriff auf wichtige Funktionen. Wollen wir eine Anwendung entwickeln und diese an den Benutzer weitergeben, sollen jedoch unter Umst&auml;nden gar nicht all diese Befehle verf&uuml;gbar sein. Vielleicht wollen wir zus&auml;tzlich oder statt dieser Eintr&auml;ge sogar eigene Elemente hinzuf&uuml;gen, beispielsweise f&uuml;r das Speichern von Anwendungsoptionen. In diesem Fall ist der erste Schritt, einen oder mehrere der vorhandenen Eintr&auml;ge auszublenden. Wie das gelingt, zeigen wir in diesem Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-17T09:29:52+00:00\" \/>\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=\"10\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Ribbon: Controls erkennen und ausblenden\",\"datePublished\":\"2023-06-17T09:29:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/\"},\"wordCount\":1678,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/a7b75be9bb094a6f9eb630366c7eff92\",\"articleSection\":[\"2023\",\"3\\\/2023\",\"Ergonomie und Benutzeroberfl\u00e4che\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/\",\"name\":\"Ribbon: Controls erkennen und ausblenden - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/a7b75be9bb094a6f9eb630366c7eff92\",\"datePublished\":\"2023-06-17T09:29:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/a7b75be9bb094a6f9eb630366c7eff92\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/a7b75be9bb094a6f9eb630366c7eff92\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Ribbon_Controls_erkennen_und_ausblenden\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ribbon: Controls erkennen und ausblenden\"}]},{\"@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":"Ribbon: Controls erkennen und ausblenden - 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\/Ribbon_Controls_erkennen_und_ausblenden\/","og_locale":"de_DE","og_type":"article","og_title":"Ribbon: Controls erkennen und ausblenden","og_description":"Das Dateimen&uuml; von Access bietet eine ganze Reihe praktischer Elemente. Diese sind im Alltagsgebrauch eines Entwicklers sehr hilfreich, bieten sie doch schnellen Zugriff auf wichtige Funktionen. Wollen wir eine Anwendung entwickeln und diese an den Benutzer weitergeben, sollen jedoch unter Umst&auml;nden gar nicht all diese Befehle verf&uuml;gbar sein. Vielleicht wollen wir zus&auml;tzlich oder statt dieser Eintr&auml;ge sogar eigene Elemente hinzuf&uuml;gen, beispielsweise f&uuml;r das Speichern von Anwendungsoptionen. In diesem Fall ist der erste Schritt, einen oder mehrere der vorhandenen Eintr&auml;ge auszublenden. Wie das gelingt, zeigen wir in diesem Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/","og_site_name":"Access im Unternehmen","article_published_time":"2023-06-17T09:29:52+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Ribbon: Controls erkennen und ausblenden","datePublished":"2023-06-17T09:29:52+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/"},"wordCount":1678,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/a7b75be9bb094a6f9eb630366c7eff92","articleSection":["2023","3\/2023","Ergonomie und Benutzeroberfl\u00e4che"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/","url":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/","name":"Ribbon: Controls erkennen und ausblenden - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/a7b75be9bb094a6f9eb630366c7eff92","datePublished":"2023-06-17T09:29:52+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/a7b75be9bb094a6f9eb630366c7eff92","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/a7b75be9bb094a6f9eb630366c7eff92"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Ribbon_Controls_erkennen_und_ausblenden\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Ribbon: Controls erkennen und ausblenden"}]},{"@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\/55001438","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=55001438"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001438\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}