{"id":55001436,"date":"2023-06-01T00:00:00","date_gmt":"2023-06-17T09:27:38","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1436"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/","title":{"rendered":"Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/0d3a701937214367bcc4b7e9ad4633e8\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Wenn Sie mit Access ein neues Bild zu einem Formular hinzuf&uuml;gen oder dieses f&uuml;r eine Schaltfl&auml;che hinterlegen, speichert Access dieses in einer Tabelle namens MSysResources. Das Hinzuf&uuml;gen ist recht einfach und l&auml;sst sich per Ribbonbefehl und anschlie&szlig;ender Auswahl per Datei &ouml;ffnen-Dialog realisieren. Allerdings kann man auf diese Weise immer nur ein Bild gleichzeitig zur Anwendung hinzuf&uuml;gen. Wenn man einer Schaltfl&auml;che schnell ein Icon zuweisen m&ouml;chte, w&auml;re es praktisch, wenn alle &uuml;blicherweise ben&ouml;tigten Bilder bereits verf&uuml;gbar sind. Daher schauen wir uns in diesem Beitrag an, wie wir mehrere Bilder auf einen Schlag zur Tabelle MSysResources hinzuf&uuml;gen k&ouml;nnen.<\/b><\/p>\n<h2>Wo landen die Bilder f&uuml;r Schaltfl&auml;chen und Co.?<\/h2>\n<p>Bevor wir uns ansehen, wie wir schnell viele Bilder zur Anwendung hinzuf&uuml;gen, werfen wir einen Blick auf den Speicherort dieser Bilddateien.<\/p>\n<p>Gemeint sind solche Bilder, die wir beispielsweise im Entwurf eines Formulars oder Berichts hinzuf&uuml;gen. Dazu gehen wir normalerweise wie folgt vor:<\/p>\n<ul>\n<li>Wir &ouml;ffnen das Zielformular in der Entwurfsansicht.<\/li>\n<li>Dann klicken wir im Ribbon auf den Befehl <b>Bild einf&uuml;gen|Durchsuchen <\/b>im Bereich <b>Steuerelemente<\/b> (siehe Bild 1).<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_001.png\" alt=\"Bild zu einem Formular hinzuf&uuml;gen\" width=\"700\" height=\"187,1225\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Bild zu einem Formular hinzuf&uuml;gen<\/span><\/b><\/p>\n<li>Bewegen wir den Mauszeiger dann &uuml;ber den Formularentwurf, befindet sich der Mauszeiger im Modus zum Einf&uuml;gen eines <b>Bild<\/b>-Steuerelements (siehe Bild 2).<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_002.png\" alt=\"Bildsteuerelement einf&uuml;gen\" width=\"424,5589\" height=\"170,2104\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Bildsteuerelement einf&uuml;gen<\/span><\/b><\/p>\n<li>Nach dem Anklicken des Zielpunktes f&uuml;r das Steuerelement &ouml;ffnet sich der Dialog <b>Grafik einf&uuml;gen<\/b>. Hier w&auml;hlen wir die gew&uuml;nschte Bilddatei, zum Beispiel mit dem Format <b>.png<\/b>.<\/li>\n<li>Nach der Auswahl erscheint das <b>Bild<\/b>-Steuerelement mit dem gew&uuml;nschten Icon im Formularentwurf (siehe Bild 3).<\/li>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_003.png\" alt=\"Das eingef&uuml;gte Bild-Steuerelement\" width=\"424,5589\" height=\"189,7798\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Das eingef&uuml;gte Bild-Steuerelement<\/span><\/b><\/p>\n<\/ul>\n<p>Wo ist das Bild nun gelandet? Ist es eingebettet? Oder verkn&uuml;pft? Nun: Es gibt noch einen dritten Zustand, den wir sehen, wenn wir in den Eigenschaften des <b>Bild<\/b>-Steuerelements auf der Seite <b>Format <\/b>die Eigenschaft <b>Bildtyp <\/b>betrachten.<\/p>\n<p>Diese hat den Wert <b>Freigegeben<\/b> (siehe Bild 4). <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_004.png\" alt=\"Eigenschaften des Bild-Steuerelements\" width=\"299,5588\" height=\"236,174\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Eigenschaften des Bild-Steuerelements<\/span><\/b><\/p>\n<p>Was hei&szlig;t das? Das bedeutet, dass die Bilddatei an zentraler Stelle gespeichert wurde und auch f&uuml;r die Verwendung in anderen Steuerelementen in anderen Formularen und Berichten geeignet ist. Um das nachzuweisen, f&uuml;gen wir dem Formular eine neue Schaltfl&auml;che hinzu. F&uuml;r diese k&ouml;nnen wir nun auch das Bild <b>brain <\/b>ausw&auml;hlen (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_005.png\" alt=\"Gleiches Bild f&uuml;r eine Schaltfl&auml;che ausw&auml;hlen\" width=\"549,559\" height=\"334,1317\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Gleiches Bild f&uuml;r eine Schaltfl&auml;che ausw&auml;hlen<\/span><\/b><\/p>\n<p>Schlie&szlig;lich finden wir auch noch im Ribbon das bereits hinzugef&uuml;gte Bild als Auswahl f&uuml;r neu anzulegende Bildsteuerelemente &#8211; siehe Bild 6.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_006.png\" alt=\"Das selektierte Bild erscheint im Ausklappmen&uuml;.\" width=\"549,559\" height=\"286,415\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Das selektierte Bild erscheint im Ausklappmen&uuml;.<\/span><\/b><\/p>\n<h2>Speicherort der &#8222;freigegebenen&#8220; Bilddateien<\/h2>\n<p>Wo aber werden diese Bilder gespeichert? Diese landen in einer Systemtabelle, die &uuml;blicherweise nicht im Navigationsbereich angezeigt wird. Um diese sichtbar zu machen, klickt man mit der rechten Maustaste auf den Titel des Navigationsbereichs und w&auml;hlt aus dem Kontextmen&uuml; den Befehl <b>Navigationsoptionen&#8230;<\/b> aus. Im nun erscheinenden Dialog w&auml;hlt man im Bereich <b>Anzeigeoptionen <\/b>die beiden Optionen <b>Ausgeblendete Objekte anzeigen <\/b>und <b>Systemobjekte anzeigen <\/b>aus.<\/p>\n<p>Danach sehen wir im Navigationsbereich die Tabelle <b>MSysResources<\/b>, die in der Datenblattansicht nach dem &Ouml;ffnen wie in Bild 7 aussieht.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_007.png\" alt=\"Bilddatei in der Tabelle MSysResources\" width=\"424,5589\" height=\"191,3652\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Bilddatei in der Tabelle MSysResources<\/span><\/b><\/p>\n<h2>Zwischenstand<\/h2>\n<p>Wir wissen also nun, dass von uns zu Schaltfl&auml;chen oder <b>Bild<\/b>-Steuerelementen hinzugef&uuml;gte Bilder in der Tabelle <b>MSysResources <\/b>landen. Wenn wir eine speziellen Sammlung an Bildern vorab in diese Tabelle laden wollen, damit wir beim Entwerfen von Formularen und Berichten aus diesem Fundus sch&ouml;pfen k&ouml;nnen, m&uuml;ssen wir jedes Bild einzeln zur Anwendung und damit zur Tabelle <b>MSysResources <\/b>hinzuf&uuml;gen.<\/p>\n<h2>Bilder schnell hinzuf&uuml;gen per VBA<\/h2>\n<p>Ich hatte mal ein Add-In entwickelt, mit dem dies schneller ging, aber dieses hat aufwendige Prozeduren verwendet, um dies zu realisieren.<\/p>\n<p>Zwischendurch hat Microsoft aber still und heimlich einen Befehl zur Klasse <b>CurrentProject<\/b> hinzugef&uuml;gt (ich bin mir zumindest sicher, dass dieser fr&uuml;her noch nicht vorhanden war).<\/p>\n<p>Diese Methode erwartet zwei Parameter:<\/p>\n<ul>\n<li>Name des Bildes, wie er in der Liste erscheinen soll<\/li>\n<li>Pfad zur Bilddatei, die importiert werden soll<\/li>\n<\/ul>\n<p>[<\/p>\n<p>Im Direktbereich kann man diese Methode wie in Bild 8 aufrufen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_008.png\" alt=\"Die Methode AddSharedImage der CurrentProject-Klasse\" width=\"549,559\" height=\"121,6516\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Die Methode AddSharedImage der CurrentProject-Klasse<\/span><\/b><\/p>\n<p>Wir haben einige <b>.png<\/b>-Dateien direkt im Verzeichnis der Datenbank gespeichert und f&uuml;r den ersten Versuch die Methode wie folgt aufgerufen:<\/p>\n<pre>CurrentProject.AddSharedImage \"add\", _\r\n     CurrentProject.Path & \"\\add.png\"<\/pre>\n<p>Schauen wir uns das Ergebnis in der Tabelle <b>MSysResources <\/b>an, war das Einf&uuml;gen erfolgreich (siehe Bild 9). Und eine weitere Probe zeigte auch, dass das neue Bild an den verschiedenen Stellen zur Auswahl bereitsteht.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_009.png\" alt=\"Die neue Bilddatei in der Tabelle MSysResources\" width=\"424,5589\" height=\"191,3652\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Die neue Bilddatei in der Tabelle MSysResources<\/span><\/b><\/p>\n<p>Es steht also nichts mehr im Wege, eine kleine Prozedur zu schreiben, mit der wir schnell viele Icons in die Tabelle <b>MSysResources <\/b>laden k&ouml;nnen!<\/p>\n<h2>Viele Icons per Prozedur laden<\/h2>\n<p>Dazu ben&ouml;tigen wir nicht viel:<\/p>\n<ul>\n<li>Dialog zur Auswahl der einzuf&uuml;genden Bilder<\/li>\n<li>Code, der die dort ausgew&auml;hlten Dateien durchl&auml;uft und mit <b>AddSharedImage <\/b>zur Datenbank hinzuf&uuml;gt<\/li>\n<\/ul>\n<h2>Bilder ausw&auml;hlen<\/h2>\n<p>Als Erstes erstellen wir den Code, mit dem wir dem Benutzer die M&ouml;glichkeit geben, die gew&uuml;nschten Bilder auszuw&auml;hlen. Dazu ben&ouml;tigen wir einen Verweis auf die Office-Bibliothek, den wir im VBA-Editor &uuml;ber den Men&uuml;befehl <b>Extras|Verweise <\/b>und anschlie&szlig;endes Ausw&auml;hlen des Eintrags aus Bild 10 zum VBA-Projekt hinzuf&uuml;gen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_010.png\" alt=\"Verweis auf die Office-Bibliothek\" width=\"424,5589\" height=\"334,6954\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Verweis auf die Office-Bibliothek<\/span><\/b><\/p>\n<p>Danach k&ouml;nnen wir die Prozedur aus Listing 1 nutzen, um den Dialog zur Auswahl von Bildern anzuzeigen, ihn mit einem Filter f&uuml;r <b>.png<\/b>-Dateien oder wahlweise f&uuml;r alle Dateitypen auszustatten und die ausgew&auml;hlten Bilddateien in einer Schleife zu verarbeiten. Diese erwartet einen Parameter namens <b>bolBeiVorhandenNummerieren<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>BilderImportieren(<span style=\"color:blue;\">Optional<\/span> bolBeiVorhandenNummerieren<span style=\"color:blue;\"> As Boolean<\/span>)\r\n      <span style=\"color:blue;\">Dim <\/span>objFiledialog<span style=\"color:blue;\"> As <\/span>Office.FileDialog\r\n      <span style=\"color:blue;\">Dim <\/span>varBildpfad<span style=\"color:blue;\"> As Variant<\/span>\r\n      <span style=\"color:blue;\">Set<\/span> objFiledialog = Application.FileDialog(msoFileDialogFilePicker)\r\n      <span style=\"color:blue;\">With<\/span> objFiledialog\r\n         .AllowMultiSelect = <span style=\"color:blue;\">True<\/span>\r\n         .Filters.Clear\r\n         .Filters.Add \"Bilddatei (*.png)\", \"*.png\"\r\n         .Filters.Add \"Alle Dateien (*.*)\", \"*.*\"\r\n         <span style=\"color:blue;\">If <\/span>.Show = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n             For Each varBildpfad In .SelectedItems\r\n                 BildImportieren CStr(varBildpfad), bolBeiVorhandenNummerieren\r\n             <span style=\"color:blue;\">Next<\/span> varBildpfad\r\n         <span style=\"color:blue;\">Else<\/span>\r\n             <span style=\"color:blue;\">Debug.Print<\/span> \"Keine Datei ausgew&auml;hlt\"\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Prozedur zum Ausw&auml;hlen von Bilddateien<\/span><\/b><\/p>\n<p>Dieser gibt an, ob Bilder, deren Dateiname ohne Dateiendung (bei <b>add.png <\/b>also <b>add<\/b>) bereits in der Tabelle <b>MSysResources <\/b>enthalten ist, dennoch hinzugef&uuml;gt werden sollen. Dies geschieht beim Hinzuf&uuml;gen beispielsweise &uuml;ber den oben vorgestellten Ribbonbefehl so, dass dem Bildnamen eine Nummer mit einem Unterstrich vorangestellt wird, bei <b>add <\/b>beispielsweise <b>1_add<\/b>.<\/p>\n<p>Die Prozedur deklariert und initialisiert eine Objektvariable auf Basis der Klasse <b>Office.FileDialog<\/b>. Beim Initialisieren gibt sie an, dass der Dialog zur Auswahl von Dateien genutzt werden soll (<b>msoFileDialogFilePicker<\/b>). Dann aktiviert sie mit <b>AllowMultiSelect <\/b>die Mehrfachauswahl von Dateien und legt die gew&uuml;nschten Filter fest. Die <b>Filters<\/b>-Auflistung wird zuvor geleert, da sie sonst noch von vorherigen Aufrufen verbliebene Filter enthalten k&ouml;nnte.<\/p>\n<p>Danach ruft sie die <b>Show<\/b>-Funktion auf, die den Dialog anzeigt und die den Code solange unterbricht, bis der Benutzer den Dialog wieder schlie&szlig;t (siehe Bild 11). Liefert <b>Show<\/b> den Wert <b>True <\/b>zur&uuml;ck, hat der Benutzer mindestens einen Eintrag ausgew&auml;hlt. Dann durchl&auml;uft die Prozedur eine <b>For Each<\/b>-Schleife &uuml;ber alle gew&auml;hlten Dateien und ruft eine Funktion namens <b>BildImportieren <\/b>auf, der sie den Namen der Datei &uuml;bergibt und die Variable <b>bolBeiVorhandenNummerieren<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_03\/pic_1436_011.png\" alt=\"Auswahl der einzuf&uuml;genden Bilder\" width=\"649,559\" height=\"440,993\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Auswahl der einzuf&uuml;genden Bilder<\/span><\/b><\/p>\n<p>Diese Funktion enth&auml;lt den Code aus Listing 2. Sie verwendet zwei Variablen namens <b>strBildname <\/b>und <b>strBildnameNummeriert <\/b>sowie eine Z&auml;hlervariable namens intNummer. Die beiden Letzteren ben&ouml;tigen wir, wenn eine Bilddatei bereits vorhanden ist.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>BildImportieren(strBildpfad<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> bolBeiVorhandenNummerieren<span style=\"color:blue;\"> As Boolean<\/span>)<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strBildname<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strBildnameNummeriert<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>intNummer<span style=\"color:blue;\"> As Integer<\/span>\r\n     strBildname = <span style=\"color:blue;\">Mid<\/span>(strBildpfad, <span style=\"color:blue;\">InStrRev<\/span>(strBildpfad, \"\\\") + 1)\r\n     strBildname = <span style=\"color:blue;\">Left<\/span>(strBildname, <span style=\"color:blue;\">InStrRev<\/span>(strBildname, \".\") - 1)\r\n     <span style=\"color:blue;\">If <\/span>IsNull(DLookup(\"id\", \"MSysResources\", \"name = ''\" & strBildname & \"''\"))<span style=\"color:blue;\"> Then<\/span>\r\n         CurrentProject.AddSharedImage strBildname, strBildpfad\r\n         BildImportieren = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">If <\/span>bolBeiVorhandenNummerieren<span style=\"color:blue;\"> Then<\/span>\r\n             intNummer = 1\r\n             strBildnameNummeriert = intNummer & \"_\" & strBildname\r\n             <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> IsNull(DLookup(\"id\", \"MSysResources\", \"name = ''\" & strBildnameNummeriert & \"''\"))\r\n                 intNummer = intNummer + 1\r\n                 strBildnameNummeriert = intNummer & \"_\" & strBildname\r\n             <span style=\"color:blue;\">Loop<\/span>\r\n             CurrentProject.AddSharedImage strBildnameNummeriert, strBildpfad\r\n             BildImportieren = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">Else<\/span>\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Das Bild ''\" & strBildname & \"'' wurde nicht importiert.\"\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     End If \r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Funktion zum Importieren einer Bilddatei<\/span><\/b><\/p>\n<p>Die Funktion ermittelt zun&auml;chst den Teil des Bildpfades aus <b>strBildpfad<\/b>, der sich hinter dem letzten Backslash (<b>\\<\/b>) befindet, also den Dateinamen ohne Verzeichnis. Dann schneidet sie davon den Teil hinter dem letzten Punkt ab, aus <b>add.png <\/b>wird so <b>add<\/b>.<\/p>\n<p>F&uuml;r diesen verbleibenden Ausdruck pr&uuml;ft sie dann per <b>DLookup<\/b>, ob der Name bereits in der Tabelle <b>MSysResources <\/b>enthalten ist. Ist das nicht der Fall, legt sie die Datei mit der <b>AddSharedImage<\/b>-Methode an und &uuml;bergibt dabei den Wert aus <b>strBildname <\/b>f&uuml;r das Feld <b>name <\/b>und den Pfad f&uuml;r das zu importierende Bild. Der R&uuml;ckgabewert der Funktion wird mit dem Wert <b>True <\/b>gef&uuml;llt.<\/p>\n<p>Ist jedoch bereits ein entsprechender Eintrag vorhanden, dann beginnt die Suche nach einem neuen Bildnamen. Dieser soll wie bei der Funktion aus dem Ribbon zum Hinzuf&uuml;gen von Bildern mit einer Zahl beginnen, der nach einem Unterstrich der Bildname folgt, also beispielsweise <b>1_add <\/b>oder <b>2_add<\/b>.<\/p>\n<p>Wir nehmen erst einmal an, dass es noch keine Datei namens <b>1_add <\/b>gibt und weisen der Variablen <b>intNummer <\/b>den Wert <b>1 <\/b>zu. Dann stellen wir daraus und aus dem Unterstrich und dem Bildnamen den neuen Bildnamen zusammen.<\/p>\n<p>Diesen speichern wir allerdings in der neuen Variablen <b>strBildnameNummeriert<\/b>. Anschlie&szlig;end durchlaufen wir solange eine <b>Do While<\/b>-Schleife, bis ein freier Bildname gefunden wurde. Dabei pr&uuml;fen wir in der <b>Do While<\/b>-Schleife, ob der aktuelle Bildname bereits vorhanden ist.<\/p>\n<p>Falls ja, erh&ouml;ht die Funktion innerhalb der Schleife den Wert von <b>intNummer <\/b>jeweils um <b>1<\/b> und stellt einen neuen Bildnamen zusammen, also beispielsweise <b>2_add<\/b>.<\/p>\n<p>Hat die Funktion schlie&szlig;lich einen noch nicht verwendeten Bildnamen gefunden, verl&auml;sst sie die Schleife und speichert das Bild in der Tabelle <b>MSysResources<\/b>. Auch hier liefert die Funktion den Wert <b>True <\/b>als Ergebnis zur&uuml;ck.<\/p>\n<p>Nach dem Start der Funktion beispielsweise mit dem folgenden Aufruf k&ouml;nnen wir also beliebig viele Dateien in die Tabelle <b>MSysResources <\/b>laden:<\/p>\n<pre>BilderImportieren <span style=\"color:blue;\">True<\/span><\/pre>\n<p>F&uuml;r knapp 2.000 Bilder dauerte das beispielsweise nur ein paar Sekunden.<\/p>\n<p>Wenn wir danach den Befehl <b>Formularentwurf|Steuerelemente|Bild einf&uuml;gen <\/b>ausw&auml;hlen, erhalten wir eine umfangreiche &Uuml;bersicht der verf&uuml;gbaren Bilder.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Die Prozedur k&ouml;nnen Sie nun in alle Anwendungen schreiben, in denen Sie viele Icons ben&ouml;tigen. Allerdings macht es wenig Sinn, immer wieder den gleichen Code in Anwendungen zu schreiben, der eigentlich eine verbesserste Version einer eingebauten Funktion liefert.<\/p>\n<p>Viel spannender w&auml;re es, die neue Funktion dauerhaft verf&uuml;gbar zu haben &#8211; oder sogar die vorhandene Funktion durch die neue Funktion zu ersetzen.<\/p>\n<p>Wie das gelingt, zeigen wir in einem weiteren Beitrag namens <b> Bilder per COM-Add-In hinzuf&uuml;gen<\/b> (<b>www.access-im-unternehmen.de\/1433<\/b>).<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>BilderFuerSchaltflaecheRibbonEtcSchnellHinzufuegen.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/7B182359-7B7F-43D4-90DB-5072D53BEF0A\/aiu_1436.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn Sie mit Access ein neues Bild zu einem Formular hinzuf&uuml;gen oder dieses f&uuml;r eine Schaltfl&auml;che hinterlegen, speichert Access diese in einer Tabelle namens MSysResources. Das Hinzuf&uuml;gen ist recht einfach und l&auml;sst sich per Ribbonbefehl und anschlie&szlig;ende Auswahl per Datei &ouml;ffnen-Dialog realisieren. Allerdings kann man auf diese Weise immer nur ein Bild gleichzeitig zur Anwendung hinzuf&uuml;gen. Wenn man einer Schaltfl&auml;che schnell ein Icon zuweisen m&ouml;chte, w&auml;re es praktisch, wenn alle &uuml;blicherweise ben&ouml;tigten Bilder bereits verf&uuml;gbar sind. Daher schauen wir uns in diesem Beitrag an, wie wir mehrere Bilder auf einen Schlag zur Tabelle MSysResources hinzuf&uuml;gen 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":[662023,66032023,44000028],"tags":[],"class_list":["post-55001436","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.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen - 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\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen\" \/>\n<meta property=\"og:description\" content=\"Wenn Sie mit Access ein neues Bild zu einem Formular hinzuf&uuml;gen oder dieses f&uuml;r eine Schaltfl&auml;che hinterlegen, speichert Access diese in einer Tabelle namens MSysResources. Das Hinzuf&uuml;gen ist recht einfach und l&auml;sst sich per Ribbonbefehl und anschlie&szlig;ende Auswahl per Datei &ouml;ffnen-Dialog realisieren. Allerdings kann man auf diese Weise immer nur ein Bild gleichzeitig zur Anwendung hinzuf&uuml;gen. Wenn man einer Schaltfl&auml;che schnell ein Icon zuweisen m&ouml;chte, w&auml;re es praktisch, wenn alle &uuml;blicherweise ben&ouml;tigten Bilder bereits verf&uuml;gbar sind. Daher schauen wir uns in diesem Beitrag an, wie wir mehrere Bilder auf einen Schlag zur Tabelle MSysResources hinzuf&uuml;gen k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-17T09:27:38+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=\"9\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen\",\"datePublished\":\"2023-06-17T09:27:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/\"},\"wordCount\":1707,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/0d3a701937214367bcc4b7e9ad4633e8\",\"articleSection\":[\"2023\",\"3\\\/2023\",\"Ergonomie und Benutzeroberfl\u00e4che\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/\",\"name\":\"Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/0d3a701937214367bcc4b7e9ad4633e8\",\"datePublished\":\"2023-06-17T09:27:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/0d3a701937214367bcc4b7e9ad4633e8\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/0d3a701937214367bcc4b7e9ad4633e8\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen\"}]},{\"@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":"Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen - 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\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/","og_locale":"de_DE","og_type":"article","og_title":"Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen","og_description":"Wenn Sie mit Access ein neues Bild zu einem Formular hinzuf&uuml;gen oder dieses f&uuml;r eine Schaltfl&auml;che hinterlegen, speichert Access diese in einer Tabelle namens MSysResources. Das Hinzuf&uuml;gen ist recht einfach und l&auml;sst sich per Ribbonbefehl und anschlie&szlig;ende Auswahl per Datei &ouml;ffnen-Dialog realisieren. Allerdings kann man auf diese Weise immer nur ein Bild gleichzeitig zur Anwendung hinzuf&uuml;gen. Wenn man einer Schaltfl&auml;che schnell ein Icon zuweisen m&ouml;chte, w&auml;re es praktisch, wenn alle &uuml;blicherweise ben&ouml;tigten Bilder bereits verf&uuml;gbar sind. Daher schauen wir uns in diesem Beitrag an, wie wir mehrere Bilder auf einen Schlag zur Tabelle MSysResources hinzuf&uuml;gen k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/","og_site_name":"Access im Unternehmen","article_published_time":"2023-06-17T09:27:38+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen","datePublished":"2023-06-17T09:27:38+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/"},"wordCount":1707,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/0d3a701937214367bcc4b7e9ad4633e8","articleSection":["2023","3\/2023","Ergonomie und Benutzeroberfl\u00e4che"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/","url":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/","name":"Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/0d3a701937214367bcc4b7e9ad4633e8","datePublished":"2023-06-17T09:27:38+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/0d3a701937214367bcc4b7e9ad4633e8","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/0d3a701937214367bcc4b7e9ad4633e8"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Bilder_fuer_Buttons_und_Co_schnell_hinzufuegen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Bilder f&uuml;r Buttons und Co. schnell hinzuf&uuml;gen"}]},{"@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\/55001436","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=55001436"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001436\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}