{"id":55000492,"date":"2025-12-01T00:00:00","date_gmt":"2026-02-05T11:36:55","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=492"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"VBA_DateiIcons_einlesen_und_speichern","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/VBA_DateiIcons_einlesen_und_speichern\/","title":{"rendered":"VBA: Datei-Icons einlesen und speichern"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/c5ad302921674f879633a6e19ebef5a1\" width=\"1\" height=\"1\" alt=\"\"><b>Symbole und Icons spielen in Microsoft-Access-Anwendungen eine oft untersch&auml;tzte Rolle. Dabei k&ouml;nnen sie die Bedienbarkeit und Verst&auml;ndlichkeit einer Datenbank erheblich verbessern &#8211; insbesondere dann, wenn Dateien, Ordner oder Dokumenttypen visuell unterschieden werden sollen. W&auml;hrend Access f&uuml;r viele Steuerelemente wie TreeView, ListView, Symbolleisten oder Ribbon-Schaltfl&auml;chen grunds&auml;tzlich Icon-Unterst&uuml;tzung bietet, stellt sich in der Praxis h&auml;ufig die Frage:Wie lassen sich die echten System-Icons von Dateien &#8211; so wie sie auch im Windows-Explorer angezeigt werden &#8211; in einer Access-Anwendung verwenden? Genau das zeigen wir in diesem Artikel und liefern auch noch das Know-how, um die eingelesenen Icons direkt in der Tabelle MSysResources zu speichern. Von dort k&ouml;nnen wir sie beispielsweise in ein ImageList-Steuerelement schreiben &#8211; um sie dann in TreeView- und ListView-Steuerelementen anzuzeigen.<\/b><\/p>\n<p>Mit Bordmitteln von Access ist das Ermitteln der Icon-Dateien nicht m&ouml;glich. Stattdessen ist ein gezielter Zugriff auf die Windows-Shell erforderlich, um Datei-Icons dynamisch zu ermitteln und f&uuml;r die eigene Benutzeroberfl&auml;che nutzbar zu machen.<\/p>\n<p>Genau hier setzt die in diesem Artikel vorgestellte Technik an: Mithilfe der Windows-API lassen sich die systemweit registrierten Icons f&uuml;r beliebige Dateitypen auslesen, in ein <b>ImageList<\/b>-Steuerelement &uuml;bernehmen und anschlie&szlig;end in verschiedenen Access-Steuerelementen einsetzen.<\/p>\n<p>Der gro&szlig;e Vorteil dieser Vorgehensweise liegt darin, dass die Icons automatisch dem jeweils installierten Programm entsprechen. PDF-Dateien, Word-Dokumente, ZIP-Archive oder ausf&uuml;hrbare Dateien werden genauso dargestellt, wie der Benutzer sie aus dem Windows-Explorer kennt &#8211; also ohne zus&auml;tzliche Grafikdateien.<\/p>\n<p>Der Artikel zeigt Schritt f&uuml;r Schritt, wie diese Technik umgesetzt wird, wie sich Icons performant zwischenspeichern lassen und an welchen Stellen einer Access-Datenbank sie sinnvoll eingesetzt werden k&ouml;nnen.<\/p>\n<p>Die Icons k&ouml;nnen wir etwa f&uuml;r die Anzeige von Dateien in einem <b>ListView<\/b>-Steuerelement in einem Formular nutzen (siehe Bild 1), wie wir es im Artikel  <b>Access: Ordner und Dateien im Formular anzeigen <\/b>(<b>www.vbentwickler.de\/3<\/b>) vorstellen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_06\/pic_492_001.png\" alt=\"Dateien mit Icons in einem ListView-Steuerelement\" width=\"599,6265\" height=\"429,6965\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Dateien mit Icons in einem ListView-Steuerelement<\/span><\/b><\/p>\n<h2>Vorbereitung: API-Funktionen und -Deklarationen<\/h2>\n<p>F&uuml;r die nachfolgend vorgestellten Techniken ben&ouml;tigen wir als Erstes eine Reihe von API-Funktionen, Konstanten und Typen.<\/p>\n<p>Diese haben wir in Listing 1 zusammengestellt.<\/p>\n<pre>#If VBA7 Then\r\n     <span style=\"color:blue;\">Private <\/span>Declare PtrSafe Function SHGetFileInfo Lib \"shell32.dll\" Alias \"SHGetFileInfoW\" ( _\r\n         ByVal pszPath<span style=\"color:blue;\"> As Long<\/span>Ptr, ByVal dwFileAttributes<span style=\"color:blue;\"> As Long<\/span>, _\r\n         psfi<span style=\"color:blue;\"> As <\/span>SHFILEINFO, ByVal cbFileInfo<span style=\"color:blue;\"> As Long<\/span>, _\r\n         ByVal uFlags<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As Long<\/span>Ptr\r\n#Else\r\n     <span style=\"color:blue;\">Private <\/span>Declare Function SHGetFileInfo Lib \"shell32.dll\" Alias \"SHGetFileInfoW\" ( _\r\n         ByVal pszPath<span style=\"color:blue;\"> As Long<\/span>, _\r\n         ByVal dwFileAttributes<span style=\"color:blue;\"> As Long<\/span>, _\r\n         psfi<span style=\"color:blue;\"> As <\/span>SHFILEINFO, _\r\n         ByVal cbFileInfo<span style=\"color:blue;\"> As Long<\/span>, _\r\n         ByVal uFlags<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As Long<\/span>\r\n#End If\r\n<span style=\"color:blue;\">Private <\/span>Declare PtrSafe Function OleCreatePictureIndirect Lib \"oleaut32.dll\" ( _\r\n     ByRef picDesc<span style=\"color:blue;\"> As <\/span>PICTDESC, _\r\n     ByRef RefIID<span style=\"color:blue;\"> As <\/span>GUID, _\r\n     ByVal fPictureOwnsHandle<span style=\"color:blue;\"> As Long<\/span>, _\r\n     ByRef IPic<span style=\"color:blue;\"> As Object<\/span>)<span style=\"color:blue;\"> As Long<\/span>\r\n<span style=\"color:blue;\">Private <\/span>Type GUID\r\n     Data1<span style=\"color:blue;\"> As Long<\/span>\r\n     Data2<span style=\"color:blue;\"> As Integer<\/span>\r\n     Data3<span style=\"color:blue;\"> As Integer<\/span>\r\n     Data4(7)<span style=\"color:blue;\"> As Byte<\/span>\r\nEnd Type\r\n<span style=\"color:blue;\">Private <\/span>Type PICTDESC\r\n     cbSizeofStruct<span style=\"color:blue;\"> As Long<\/span>\r\n     picType<span style=\"color:blue;\"> As Long<\/span>\r\n     hImage<span style=\"color:blue;\"> As Long<\/span>Ptr\r\n     xExt<span style=\"color:blue;\"> As Long<\/span>\r\n     yExt<span style=\"color:blue;\"> As Long<\/span>\r\nEnd Type\r\n<span style=\"color:blue;\">Private <\/span>Type SHFILEINFO\r\n     hIcon<span style=\"color:blue;\"> As Long<\/span>Ptr\r\n     iIcon<span style=\"color:blue;\"> As Long<\/span>\r\n     dwAttributes<span style=\"color:blue;\"> As Long<\/span>\r\n     szDisplayName<span style=\"color:blue;\"> As String<\/span> * 260\r\n     szTypeName<span style=\"color:blue;\"> As String<\/span> * 80\r\nEnd Type\r\n<span style=\"color:blue;\">Private <\/span>Const PICTYPE_ICON = 3\r\n<span style=\"color:blue;\">Private <\/span>Const SHGFI_ICON = &H100\r\n<span style=\"color:blue;\">Private <\/span>Const SHGFI_SMALLICON = &H1\r\n<span style=\"color:blue;\">Private <\/span>Const SHGFI_LARGEICON = &H0\r\n<span style=\"color:blue;\">Private <\/span>Const SHGFI_USEFILEATTRIBUTES = &H10\r\n<span style=\"color:blue;\">Private <\/span>Const FILE_ATTRIBUTE_NORMAL = &H80<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: API-Deklarationen<\/span><\/b><\/p>\n<h2>Speichern von Icon-Dateien in der Tabelle MSysResources<\/h2>\n<p>Die Tabelle <b>MSysResources<\/b> speichert die f&uuml;r eine Access-Anwendung notwendigen Ressourcen wie etwa die Bilddateien, die in Formularen, Berichten und Steuerelementen wie der Schaltfl&auml;che oder dem Bild-Steuerelement angezeigt werden.<\/p>\n<p>Dies ist der Platz, an dem wir auch die Icon-Dateien speichern k&ouml;nnen. Diese k&ouml;nnen wir dann beispielsweise von dort in ein <b>ImageList<\/b>-Steuerelement &uuml;bertragen, um sie von dort aus in einem <b>TreeView<\/b>&#8211; oder <b>ListView<\/b>-Steuerelement anzuzeigen.<\/p>\n<h2>Funktion zum Speichern von Icon-Dateien<\/h2>\n<p>Die Hauptfunktion hei&szlig;t <b>SaveFileIconToMSysResources <\/b>und erwartet drei Parameter:<\/p>\n<ul>\n<li><b>strFilePath<\/b>: Pfad der Datei, dessen Icon wir speichern wollen<\/li>\n<li><b>strResourceName<\/b>: Name, unter dem die Datei in der Tabelle <b>MSysResources <\/b>gespeichert werden soll<\/li>\n<li><b>bolSmallIcon<\/b>: Gibt an, ob ein kleines Icon gespeichert werden soll (16 x 16 Pixel)<\/li>\n<\/ul>\n<p>Die Funktion haben wir in Listing 2 abgebildet.<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>SaveFileIconToMSysResources(ByVal strFilePath<span style=\"color:blue;\"> As String<\/span>, ByVal strResourceName<span style=\"color:blue;\"> As String<\/span>, _\r\n         <span style=\"color:blue;\">Optional<\/span> ByVal bolSmallIcon<span style=\"color:blue;\"> As Boolean<\/span> = <span style=\"color:blue;\">True<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>hIcon<span style=\"color:blue;\"> As Long<\/span>Ptr\r\n     <span style=\"color:blue;\">Dim <\/span>pic<span style=\"color:blue;\"> As Object<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strTempFile<span style=\"color:blue;\"> As String<\/span>\r\n     \r\n     hIcon = GetFileIconHandle(strFilePath, bolSmallIcon)\r\n     <span style=\"color:blue;\">If <\/span>hIcon = 0<span style=\"color:blue;\"> Then<\/span> <span style=\"color:blue;\">Exit Sub<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> pic = IconHandleToPicture(hIcon)\r\n     <span style=\"color:blue;\">If <\/span>pic Is Nothing<span style=\"color:blue;\"> Then<\/span> <span style=\"color:blue;\">Exit Sub<\/span>\r\n     strTempFile = CurrentProject.Path & \"\\icon.ico\"\r\n     SavePicture pic, strTempFile\r\n     SaveIconToMSysResources strResourceName, \"ICO\", strTempFile\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     Kill strTempFile\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Die Funktion SaveFileIconToMSysResources<\/span><\/b><\/p>\n<p>Sie holt als Erstes mit der Funktion <b>GetFileIconHandle <\/b>ein Handle auf das File-Icon der Datei, die wir mit <b>strFilePath <\/b>&uuml;bergeben. Au&szlig;erdem &uuml;bergeben wir dieser den Parameter <b>bolSmallIcon<\/b>.<\/p>\n<p>Wenn das Icon-Handle nicht <b>0 <\/b>ist, holen wir das Icon hinter dem Handle mit einer weiteren Funktion namens <b>IconHandleToPicture<\/b>, der wir das Handle &uuml;bergeben. Ist das Ergebnis nicht leer, legen wir mit der Funktion <b>SavePicture<\/b> eine tempor&auml;re Datei namens <b>icon.ico <\/b>im aktuellen Datenbankordner an. Dieser &uuml;bergeben wir die Objektvariable mit dem Bild (<b>pic<\/b>) sowie den Pfad der zu speichernden Datei.<\/p>\n<p>Schlie&szlig;lich rufen wir die Funktion <b>SaveIconToMSysResources <\/b>auf, welche das Icon einliest und in der Tabelle <b>MSysResources <\/b>speichert, und l&ouml;schen die tempor&auml;re Datei wieder.<\/p>\n<h2>Handle des Icons holen<\/h2>\n<p>Die Funktion <b>GetFileIconHandle <\/b>aus Listing 3 erwartet den Pfad der Datei, deren Icon wir ermitteln wollen, sowie die Angabe, ob ein kleines Icon geliefert werden soll.<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>GetFileIconHandle(ByVal strFilePath<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> ByVal bolSmall<span style=\"color:blue;\"> As Boolean<\/span> = <span style=\"color:blue;\">True<\/span>)<span style=\"color:blue;\"> As Long<\/span>Ptr\r\n     <span style=\"color:blue;\">Dim <\/span>sfi<span style=\"color:blue;\"> As <\/span>SHFILEINFO\r\n     <span style=\"color:blue;\">Dim <\/span>lngFlags<span style=\"color:blue;\"> As Long<\/span>\r\n     lngFlags = SHGFI_ICON Or SHGFI_USEFILEATTRIBUTES\r\n     <span style=\"color:blue;\">If <\/span>bolSmall<span style=\"color:blue;\"> Then<\/span>\r\n         lngFlags = lngFlags Or SHGFI_SMALLICON\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         lngFlags = lngFlags Or SHGFI_LARGEICON\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     SHGetFileInfo StrPtr(strFilePath), FILE_ATTRIBUTE_NORMAL, sfi, LenB(sfi), lngFlags\r\n     GetFileIconHandle = sfi.hIcon\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Funktion zum Ermitteln des Handles auf das File-Icon<\/span><\/b><\/p>\n<p>Sie stellt in der Variablen <b>lngFlags<\/b> einige Parameter zusammen, die davon abh&auml;ngen, ob wir ein kleines Icon haben m&ouml;chten oder nicht.<\/p>\n<p><b>SHGFI_ICON <\/b>legt fest, dass wir ein Icon abfragen wollen, <b>SHGFI_USEFILEATTRIBUTES <\/b>steht f&uuml;r das Abfragen des Icons anhand des Dateityps beziehungsweise der Dateiendung und <b>SHGFI_SMALLICON <\/b>oder <b>SHGFI_LARGEICON <\/b>legen fest, ob wir ein kleines oder gro&szlig;es Icon ben&ouml;tigen.<\/p>\n<p>Dann ruft sie die API-Funktion <b>SHGetFileInfo <\/b>auf, der wir den Parameter sfi &uuml;bergeben, der letztlich das Handle &uuml;ber die Eigenschaft <b>hIcon <\/b>liefert.<\/p>\n<p>Dieses gibt die Funktion als Ergebnis zur&uuml;ck.<\/p>\n<h2>Icon-Picture holen<\/h2>\n<p>Die n&auml;chste Funktion namens <b>IconHandleToPicture <\/b>erwartet das Handle auf das Icon und liefert das Icon selbst als <b>Picture<\/b>-Objekt zur&uuml;ck (siehe Listing 4).<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>IconHandleToPicture(ByVal hIcon<span style=\"color:blue;\"> As Long<\/span>Ptr)<span style=\"color:blue;\"> As Object<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>picDesc<span style=\"color:blue;\"> As <\/span>PICTDESC\r\n     <span style=\"color:blue;\">Dim <\/span>IID_IDispatch<span style=\"color:blue;\"> As <\/span>GUID\r\n     <span style=\"color:blue;\">Dim <\/span>pic<span style=\"color:blue;\"> As Object<\/span>\r\n     <span style=\"color:blue;\">With<\/span> IID_IDispatch\r\n         .Data1 = &H20400\r\n         .Data4(0) = &HC0\r\n         .Data4(7) = &H46\r\n     End <span style=\"color:blue;\">With<\/span>\r\n     <span style=\"color:blue;\">With<\/span> picDesc\r\n         .cbSizeofStruct = <span style=\"color:blue;\">Len<\/span>(picDesc)\r\n         .picType = PICTYPE_ICON\r\n         .hImage = hIcon\r\n     End <span style=\"color:blue;\">With<\/span>\r\n     OleCreatePictureIndirect picDesc, IID_IDispatch, True, pic\r\n     <span style=\"color:blue;\">Set<\/span> IconHandleToPicture = pic\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Funktion zum Holen des Icons<\/span><\/b><\/p>\n<p>Sie verwendet wiederum die API-Funktion <b>OleCreatePictureIndirect<\/b>, um das Bild in die Variable <b>pic<\/b> zu f&uuml;llen. Diese gibt die Funktion als Ergebnis zur&uuml;ck.<\/p>\n<h2>Speichern des Icons in der Tabelle MSysResources<\/h2>\n<p>Das zwischenzeitlich von der Hauptprozedur in einer tempor&auml;ren Datei gespeicherte Icon wollen wir nun noch in der Tabelle <b>MSysResources <\/b>speichern.<\/p>\n<p>Das erledigen wir mit der Prozedur <b>SaveIconToMSysResources <\/b>aus Listing 5.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>SaveIconToMSysResources(ByVal strResourceName<span style=\"color:blue;\"> As String<\/span>, ByVal strExtension<span style=\"color:blue;\"> As String<\/span>, _\r\n         ByVal strTempFile<span style=\"color:blue;\"> As String<\/span>)\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>rstData<span style=\"color:blue;\"> As <\/span>DAO.Recordset2\r\n     <span style=\"color:blue;\">Dim <\/span>fld2<span style=\"color:blue;\"> As <\/span>DAO.Field2\r\n     <span style=\"color:blue;\">Dim <\/span>strSQL<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     db.Execute \"DELETE FROM MSysResources WHERE Name = ''\" & strResourceName & \"''\", dbFailOnError\r\n     strSQL = \"SELECT * FROM MSysResources WHERE 1 = 2\"\r\n     <span style=\"color:blue;\">Set<\/span> rst = db.OpenRecordset(strSQL, dbOpenDynaset)\r\n     rst.Add<span style=\"color:blue;\">New<\/span>\r\n     rst!Name = strResourceName\r\n     rst!Extension = strExtension\r\n     rst!Type = \"img\"\r\n             \r\n     <span style=\"color:blue;\">Set<\/span> rstData = rst!Data.Value\r\n     rstData.Add<span style=\"color:blue;\">New<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> fld2 = rstData!FileData\r\n     fld2.LoadFromFile strTempFile\r\n     rstData!FileName = strResourceName & \".ico\"\r\n     rstData.Update\r\n     \r\n     rst.Update\r\n     rst.Close\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Funktion zum Speichern des Icons in der Tabelle MSysResources<\/span><\/b><\/p>\n<p>Diese erwartet die folgenden Parameter:<\/p>\n<ul>\n<li><b>strResourceName<\/b>: Name, unter dem die Datei in MSysResources gespeichert werden soll<\/li>\n<li><b>strExtension<\/b>: Dateiendung<\/li>\n<li><b>strTempFile<\/b>: Pfad zur tempor&auml;ren Icon-Datei<\/li>\n<\/ul>\n<p>Die Prozedur l&ouml;scht zun&auml;chst alle bereits vorhandenen Eintr&auml;ge aus der Tabelle <b>MSysResources <\/b>mit dem f&uuml;r <b>strResourceName <\/b>angegebenen Namen. Dann holt sie ein Recordset auf Basis dieser Tabelle und f&uuml;gt einen neuen Datensatz hinzu. F&uuml;r diesen stellt sie das Feld <b>Name <\/b>auf den Wert aus <b>strResourceName<\/b>, <b>Extension <\/b>auf den Wert aus <b>strExtension <\/b>und das Feld <b>Type <\/b>auf <b>img <\/b>ein.<\/p>\n<p>Dann referenziert sie das im Feld <b>Data <\/b>enthaltene Recordset und f&uuml;gt auch hier einen neuen Datensatz hinzu. F&uuml;r diesen l&auml;dt sie als Erstes mit der Methode <b>LoadFromFile <\/b>die Icon-Datei in das Feld <b>FileData<\/b>. Dann stellt sie den Wert des Feldes <b>Filename <\/b>auf den Wert aus <b>strResourceName <\/b>plus der Dateiendung <b>.ico <\/b>ein und speichert dann beide Recordsets mit der <b>Update<\/b>-Methode.<\/p>\n<h2>Aufruf der Prozedur SaveFileIconToMSysResources<\/h2>\n<p>Damit k&ouml;nnen wir nun das Icon einer Datei zur Tabelle <b>MSysResources <\/b>hinzuf&uuml;gen. Dazu rufen wir die Prozedur <b>SaveFileIconToMSysResources <\/b>beispielsweise wie folgt auf:<\/p>\n<pre><span style=\"color:blue;\">Call<\/span> SaveFileIconToMSysResources(\"C:\\Test\\Beispiel.pdf\", \"ico_pdf\", <span style=\"color:blue;\">True<\/span>)<\/pre>\n<p>Dies speichert das Icon, das vom System f&uuml;r PDF-Dateien verwendet wird, in der Tabelle <b>MSysResources<\/b>.<\/p>\n<p>Das Ergebnis k&ouml;nnen wir uns zuerst in dieser Tabelle ansehen, die wir allerdings erst im Navigationsbereich finden, nachdem wir die Systemobjekte und die ausgeblendeten Objekte &uuml;ber die Optionen des Navigationsbereichs eingeblendet haben. &Ouml;ffnen wir die Tabelle dann, erhalten wir etwa die Datens&auml;tze wie in Bild 2.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_06\/pic_492_002.png\" alt=\"Die Tabelle MSysResources mit einige Beispieldateien\" width=\"499,6267\" height=\"299,3715\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Die Tabelle MSysResources mit einige Beispieldateien<\/span><\/b><\/p>\n<p>Mit einem Doppelklick auf das Klammer-Symbol und der Auswahl der Schaltfl&auml;che <b>&Ouml;ffnen <\/b>im dann erscheinenden Dialog <b>Anlagen <\/b>wird die Datei im entsprechenden Programm angezeigt.<\/p>\n<h2>Icons im &Uuml;berblick ansehen<\/h2>\n<p>Wir k&ouml;nnen uns die hier gespeicherten Dateien allerdings auch in der &Uuml;bersicht ansehen.<\/p>\n<p>Dazu &ouml;ffnen wir ein neues, leeres Formular in der Entwurfsansicht und w&auml;hlen aus dem Ribbon den Befehl Steuerelemente|Bild einf&uuml;gen aus. Dies &ouml;ffnet einen Bereich, der die enthaltenen Icons anzeigt (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2025_06\/pic_492_003.png\" alt=\"Die in MSysResources gespeicherten Icons im &Uuml;berblick\" width=\"700\" height=\"359,7339\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Die in MSysResources gespeicherten Icons im &Uuml;berblick<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Die so gespeicherten Daten k&ouml;nnen wir nun weiterverarbeiten &#8211; zum Beispiel, indem wir diese in ein <b>ImageList<\/b>-Steuerelement &uuml;bertragen und sie dann als Icons in einem <b>TreeView<\/b>&#8211; oder <b>ListView<\/b>-Steuerelement anzeigen.<\/p>\n<p>Wie das gelingt, zeigen wir im Artikel <b>Access: Ordner und Dateien im Formular anzeigen <\/b>(<b>www.vbentwickler.de\/3<\/b>).<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>DateiIconsEinlesenUndNutzen.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/EF4C6D6B-F89A-458E-8A86-DA1A0A9C26CA\/vbe_492.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Symbole und Icons spielen in Microsoft-Access-Anwendungen eine oft untersch&auml;tzte Rolle. Dabei k&ouml;nnen sie die Bedienbarkeit und Verst&auml;ndlichkeit einer Datenbank erheblich verbessern &#8211; insbesondere dann, wenn Dateien, Ordner oder Dokumenttypen visuell unterschieden werden sollen. W&auml;hrend Access f&uuml;r viele Steuerelemente wie TreeView, ListView, Symbolleisten oder Ribbon-Schaltfl&auml;chen grunds&auml;tzlich Icon-Unterst&uuml;tzung bietet, stellt sich in der Praxis h&auml;ufig die Frage:Wie lassen sich die echten System-Icons von Dateien &#8211; so wie sie auch im Windows-Explorer angezeigt werden &#8211; in einer Access-Anwendung verwenden? Genau das zeigen wir in diesem Artikel und liefern auch noch das Know-how, um die eingelesenen Icons direkt in der Tabelle MSysResources zu speichern. Von dort k&ouml;nnen wir sie beispielsweise in ein ImageList-Steuerelement schreiben &#8211; um sie dann in TreeView- und ListView-Steuerelementen anzuzeigen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662025,66062025,44000026,44000033,44000028],"tags":[],"yst_prominent_words":[],"class_list":["post-55000492","post","type-post","status-publish","format-standard","hentry","category-662025","category-66062025","category-Outlook_programmieren","category-Visual_Basic_Programmierung","category-Word_programmieren"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000492"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000492\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000492"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}