{"id":55001059,"date":"2016-10-01T00:00:00","date_gmt":"2020-05-22T15:25:27","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1059"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Explorer_und_Shell_ansteuern","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/","title":{"rendered":"Explorer und Shell ansteuern"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/d552c971e00b42658da0df2004b317b4\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Hin und wieder kommt es vor, dass Sie aus Access heraus den Windows Explorer &ouml;ffnen und dabei gleich ein Verzeichnis Ihrer Wahl ansteuern m&ouml;chten. Gr&uuml;nde daf&uuml;r gibt es viele. Haben Sie etwa eine Textdatei exportiert, so macht es sich gut, dem Anwender anschlie&szlig;end gleich den passenden Ordner zu pr&auml;sentieren und dort die Datei zu markieren. &uuml;ber einige Zeilen VBA-Code rund um ein Shell-Objekt ist das schnell realisiert.<\/b><\/p>\n<h2>Explorer aufrufen<\/h2>\n<p>Der <b>Explorer<\/b> ist eine Anwendung, die die Verwaltung der <b>Windows Shell<\/b> oder zumindest Teile von ihr, erlaubt. Wir erw&auml;hnen diesen Zusammenhang nur, weil sp&auml;ter noch ausf&uuml;hrlicher auf <b>Shell<\/b>-Objekte unter VBA eingegangen wird.<\/p>\n<p>Um ausf&uuml;hrbare Dateien zu starten, k&ouml;nnen Sie die VBA-Anweisung <b>Shell<\/b> verwenden. Sie &uuml;bergeben ihr als Parameter den Pfad zur ausf&uuml;hrbaren Datei und optional noch den Fenstermodus, in dem sie gestartet werden soll:<\/p>\n<pre>Shell \"Explorer.exe\", vbNormalFocus<\/pre>\n<p>Diese Zeile &ouml;ffnet den Windows Explorer in einem normalen Fenster. Sie k&ouml;nnen dieses jedoch auch gleich maximieren:<\/p>\n<pre>Shell \"Explorer.exe\", vbMaximizedFocus<\/pre>\n<p>Den Pfad zur <b>explorer.exe <\/b>m&uuml;ssen Sie nicht voll ausschreiben oder kennen, da sie sich im Suchpfad von Windows befindet. War&#8220;&#8220;s das schon Nein, nat&uuml;rlich nicht! Denn erstens gibt es noch diverse Kommandozeilenoptionen f&uuml;r den Explorer, die zu erl&auml;utern w&auml;ren, und zweitens stellen wir noch eine Alternative zur <b>Shell<\/b>-Anweisung vor.<\/p>\n<h2>ShellExecute<\/h2>\n<p>Vielleicht ist Ihnen diese Funktion schon einmal untergekommen. Es gibt zwar eine <b>Windows-API<\/b>-Funktion gleichen Namens, doch wir verwenden sie im Zusammenhang mit der <b>Shell<\/b>-Bibliothek, wo sie ebenfalls vorkommt und auch identische Funktionalit&auml;t aufweist.<\/p>\n<p>Dazu ben&ouml;tigen wir einen Verweis auf diese Bibliothek. &ouml;ffnen Sie im VBA-Editor unter <b>Extras|Verweise<\/b> den entsprechenden Dialog und aktivieren Sie den Eintrag <b>Microsoft Shell Controls And Automation<\/b>. Diese Bibliothek ist grunds&auml;tzlich unter jeder Version von Windows vorhanden und verweist auf die <b>shell32.dll<\/b>. Nun k&ouml;nnen Sie ein <b>Shell<\/b>-Objekt anlegen:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>oShell<span style=\"color:blue;\"> As <\/span>Shell32.Shell\r\n<span style=\"color:blue;\">Set<\/span> oShell = <span style=\"color:blue;\">New<\/span> Shell32.Shell<\/pre>\n<p>Wenn Sie im VBA-Objektkatalog oben die Bibliothek <b>Shell32<\/b> ausw&auml;hlen und links zur <b>Shell<\/b>-Klasse navigieren, so finden Sie rechts deren zahlreiche Methoden, und deren Namen sagen bereits einiges &uuml;ber das Thema der Klasse aus. <\/p>\n<p>Uns interessiert im Moment nur die Methode <b>ShellExecute<\/b>, die &auml;hnlich arbeitet, wie die <b>Shell<\/b>-Anweisung von VBA, jedoch mit deutlich mehr Parametern ausgestattet ist, die die Funktionalit&auml;t erweitern. Mit dieser Zeile &ouml;ffnen Sie den Explorer, nachdem das <b>Shell<\/b>-Objekt angelegt wurde:<\/p>\n<pre>oShell.ShellExecute \"explorer.exe\", _\r\n     , , , \"open\", 1<\/pre>\n<p>Mehrere Parameter der Methode sind optional, was durch die Kommas deutlich wird. Zun&auml;chst erwartet die Funktion den Pfad der ausf&uuml;hrbaren Datei, wobei dieser auch hier nicht vollst&auml;ndig angegeben werden muss.<\/p>\n<p>Der zweite Parameter gibt die <b>Kommandozeilenoptionen<\/b> an, die der Anwendung mitgegeben werden sollen. Soll der Explorer das Verzeichnis <b>c:\\windows<\/b> anzeigen, so ist hier der richtige Ort f&uuml;r die Pfadangabe:<\/p>\n<pre>oShell.ShellExecute _\r\n     \"explorer.exe\", \"c:\\windows\"<\/pre>\n<p>Damit weicht die Syntax dieser Funktion von der <b>Shell<\/b>-Anweisung ab, bei der beide Angaben in einem String zu kombinieren w&auml;ren:<\/p>\n<pre>Shell \"explorer.exe c:\\windows\"<\/pre>\n<p>Das macht die Sache etwas &uuml;bersichtlicher. Der dritte optionale Parameter gibt den Ausf&uuml;hrungspfad an. Wie bei Dateiverkn&uuml;pfungen k&ouml;nnen Sie hier festlegen, welches Standardverzeichnis dem startenden Prozess zugeeignet wird. In der Regel kann dieser Parameter ignoriert werden.<\/p>\n<p>Das Interessante an der <b>ShellExecute<\/b>-Funktion ist nun der vierte Parameter, der das sogenannte Aktions-<b>Verb<\/b> erwartet. Das sind Strings, die die auf den Prozess auszuf&uuml;hrende Aktion angeben. Der Standard ist <b>open <\/b>f&uuml;r normales Starten der Anwendung. Lassen Sie den Parameter aus, so setzt Windows funktional automatisch <b>open <\/b>ein. Es gibt aber nat&uuml;rlich noch weitere Verben, auf die sp&auml;ter noch die Sprache kommt.<\/p>\n<p>Der letzte Parameter ist identisch mit dem der <b>Shell<\/b>-Anweisung und gibt den Fenstermodus an. Die <b>1<\/b> im Beispiel entspricht dem <b>vbNormalFocus<\/b>. Sie k&ouml;nnen hier also die gleichen Konstanten angeben, wie bei der <b>Shell<\/b>-Anweisung.<\/p>\n<p>Damit Sie nicht in jeder Routine, die das <b>Shell<\/b>-Objekt ben&ouml;tigt, dieses per <b>New<\/b> neu anlegen m&uuml;ssen, greifen Sie zu einer Hilfsfunktion, wie in Listing 1. Dort ist in einem Modul die Variable <b>m_Shell<\/b> als globales <b>Shell<\/b>-Objekt deklariert.<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>m_Shell<span style=\"color:blue;\"> As <\/span>Shell32.Shell\r\n<span style=\"color:blue;\">Public Function <\/span>oShell()<span style=\"color:blue;\"> As <\/span>Shell32.Shell\r\n     <span style=\"color:blue;\">If <\/span>m_Shell Is Nothing<span style=\"color:blue;\"> Then<\/span> <span style=\"color:blue;\">Set<\/span> m_Shell = <span style=\"color:blue;\">New<\/span> Shell32.Shell\r\n     <span style=\"color:blue;\">Set<\/span> oShell = m_Shell\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Funktion zum Zur&uuml;ckgeben des Shell-Objekts<\/span><\/b><\/p>\n<p>Die Funktion <b>oShell<\/b> gibt dieses Objekt schlicht zur&uuml;ck, &uuml;berpr&uuml;ft davor jedoch mit einem Test auf <b>Nothing<\/b>, ob es &uuml;berhaupt gef&uuml;llt ist. Falls nicht, so wird der Variablen ein neues <b>Shell<\/b>-Objekt verabreicht. <b>oShell<\/b> k&ouml;nnen Sie nun an jeder beliebigen Stelle im VBA-Projekt verwenden, wenn Sie ein <b>Shell<\/b>-Objekt ben&ouml;tigen.<\/p>\n<h2>Kommandozeilenoptionen<\/h2>\n<p>Anhand der folgenden Prozeduren erl&auml;utern wir, wie sich der aufgerufene Explorer &uuml;ber Kommandozeilenoptionen steuern l&auml;sst (s. Listing 2).<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>RunExplorerFolder()\r\n     oShell.ShellExecute \"explorer.exe\", \"c:\\windows\", , \"open\", 1\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Sub <\/span>RunExplorerList()\r\n     oShell.ShellExecute \"explorer.exe\", \"\/e,c:\\\", , \"open\", 1\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Sub <\/span>RunExplorerRoot()\r\n     oShell.ShellExecute \"explorer.exe\", \"\/e,\/root,c:\\windows\", , \"open\", 1\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Sub <\/span>RunExplorerSelectFolder()\r\n     oShell.ShellExecute \"explorer.exe\", _\r\n         \"\/select,c:\\windows\\system32\", , \"open\", 1\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Sub <\/span>RunExplorerSelectFile()\r\n     oShell.ShellExecute \"explorer.exe\", _\r\n         \"\/select,c:\\windows\\system32\\mscomctl.ocx\", , \"open\", 1\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Verschiedene Routinen mit Optionen zum Starten des Explorers<\/span><\/b><\/p>\n<p>Die erste Option lernten Sie bereits kennen. Sie &ouml;ffnet den Explorer mit vorgegebenem Pfad (Prozedur <b>RunExplorerFolder<\/b>). In <b>RunExplorerList<\/b> ist dem Pfad <b>c:\\windows<\/b> noch ein <b>\/e,<\/b> vorangestellt.<\/p>\n<p>Das soll nach Aussage von Microsoft den Explorer im Modus mit Verzeichnisbaum links und Dateien rechts &ouml;ffnen. Ohne dieses <b>\/e <\/b>w&uuml;rde sich nur der Ordner allein &ouml;ffnen. Diese Aussage ist f&uuml;r neuere Windows-Versionen nicht mehr g&uuml;ltig. Die geteilte Ansicht tritt in beiden F&auml;llen ein.<\/p>\n<p>Wie daraus aber zu erkennen ist, werden mehrere Optionen durch Kommas getrennt aneinander gef&uuml;gt. Gibt man als weitere Option <b>\/root <\/b>an, so wird der folgende Pfad als Startverzeichnis des Explorers angew&auml;hlt (Prozedur <b>RunExplorerRoot<\/b>). Alle anderen Elemente sind ausgeblendet. Sie k&ouml;nnen in diesem Explorer also nicht auf dar&uuml;ber liegende Verzeichnisse oder Laufwerke wechseln.<\/p>\n<p>Die entsprechenden Schaltfl&auml;chen fehlen auch im Men&uuml;band. <\/p>\n<p>Schlie&szlig;lich l&auml;sst sich &uuml;ber die Option <b>\/Select <\/b>auch direkt ein Verzeichnis oder eine Datei im sich &ouml;ffnenden Explorer markieren.<\/p>\n<p>Dazu f&uuml;gen Sie deren Pfad unmittelbar hinter die Anweisung an (Prozeduren <b>RunExplorerSelectFile<\/b> und <b>RunExplorerSelectFolder<\/b>).<\/p>\n<p>Leider l&auml;sst sich diese Option nicht mit <b>\/root<\/b> kombinieren.<\/p>\n<p>Das bedeutet: Wenn Sie Verzeichnisse oder Dateien vormarkieren, so bleibt links leider der ganze Baum bestehen.<\/p>\n<p>Der Versuch, beide Optionen dennoch zu kombinieren, f&uuml;hrt ohne Fehlermeldung schlicht zur Anzeige des Desktops im Explorer.<\/p>\n<p>M&ouml;chten Sie den Explorer mit der Auswahl <b>Computer<\/b> starten, so greifen Sie wie in Prozedur <b>RunExplorerComputer<\/b> aus Listing 3 zu einem Trick: &uuml;bergeben Sie einfach nur ein Komma als Options-String. <\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>RunExplorerComputer()\r\n     oShell.ShellExecute \"explorer.exe\", \",\", , \"open\", 1\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Sub <\/span>OpenFileExplorer(sFile<span style=\"color:blue;\"> As String<\/span>)\r\n     oShell.ShellExecute \"explorer.exe\", \"\/select,\" & sFile, , \"open\", 1\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Sub <\/span>RunExplorerSys()\r\n     oShell.ShellExecute \"explorer.exe\", _\r\n         \"::{21EC2020-3AEA-1069-A2DD-08002B30309D}\", , \"open\", 1\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Sub <\/span>RunExplorerPrinters()\r\n     oShell.ShellExecute \"explorer.exe\", \"\/e,\/root, \" & _\r\n         \"::{21ec2020-3aea-1069-a2dd-08002b30309d}\\\" & _\r\n         \"::{2227a280-3aea-1069-a2de-08002b30309d}\", , \"open\", 1\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Prozeduren zum erweiterten Starten des Explorers<\/span><\/b><\/p>\n<p>Die Routine <b>OpenFileExplorer<\/b> ist allgemeiner gehalten. Als Parameter &uuml;bergeben Sie ihr in <b>sFile<\/b> den Pfad einer Datei oder eines Orders. Dieser wird dann im Explorer ge&ouml;ffnet und markiert, indem die <b> \/Select<\/b>-Option mit der String-Variablen verkettet wird.<\/p>\n<p>Nun finden Sie im Explorer ja nicht nur Elemente des Dateisystems, wie das noch bis <b>Windows 98<\/b> der Fall war, sondern auch solche, wie <b>Systemsteuerung<\/b> oder <b>Netzwerke<\/b>. Diese Elemente besitzen keinen Verzeichnispfad.<\/p>\n<p>Und dennoch kann man sie ansteuern: Dazu bedarf es anstelle des Pfads einer speziellen <b>GUID<\/b>, die das Element eindeutig identifiziert. Die Routine <b>RunExplorerSys<\/b> etwa &ouml;ffnet die Systemsteuerung, weil diese grunds&auml;tzlich die angegebene <b>GUID<\/b> besitzt.<\/p>\n<p>Die Schreibweise ist dabei immer gleich: vor die eigentliche <b>GUID<\/b> kommen zwei Doppelpunkte. Diese <b>Shell<\/b>-Objekte sind unter dem Namen <b>SpecialFolders<\/b> bekannt, wobei jene mit einer <b>GUID<\/b> eigentlich <b>SpecialSpecialFolders<\/b> hei&szlig;en m&uuml;ssten, wie wir noch sehen werden.<\/p>\n<p>Da diese Elemente wiederum im Prinzip Ordner darstellen k&ouml;nnen, ist auch der Bezug auf deren Unterelemente m&ouml;glich. Die Systemsteuerung enth&auml;lt etwa die Liste der Drucker.<\/p>\n<p>Auf sie beziehen Sie sich, indem Sie an die <b>GUID<\/b> eine weitere, wie einen Unterordner durch den BackSlash getrennt, anf&uuml;gen. So kommen Sie in <b>RunExplorerPrinters<\/b> direkt in die Verzeichnisliste der Drucker des Systems.<\/p>\n<p>Sie fragen sich vielleicht, wo die GUIDs herkommen Das ist leider nicht so einfach zu beantworten. Zwar gibt es generell g&uuml;ltige <b>Shell<\/b>-Elemente mit vorgegebener GUID, wie etwa bei der Systemsteuerung, doch durch installierbare Shell-Erweiterungen sieht die Sache auf jedem System anders aus. Zum Gl&uuml;ck k&ouml;nnen Sie &uuml;ber die <b>Shell32<\/b>-Bibliothek diese <b>GUIDs<\/b> f&uuml;r ihr System selbst ermitteln&#8230;<\/p>\n<h2>Shell-NameSpaces<\/h2>\n<p>Bisher verwendeten wir nur die eine Methode <b>ShellExecute<\/b> des Shell-Objekts. Eine m&auml;chtige Funktion ist daneben <b>NameSpace<\/b>, die uns zu neuen Klassen der Bibliothek f&uuml;hrt.<\/p>\n<p><b>NameSpace<\/b> &uuml;bergibt man einen Parameter des Typs <b>Variant<\/b>. Dabei kann es sich um einen String oder eine Zahl handeln. Zur&uuml;ck bekommt man dann ein Objekt der Klasse <b>Folder<\/b>.<\/p>\n<p>Die Methode ist also daf&uuml;r gemacht, um virtuelle Ordner-Objekte anhand von Parametern zur&uuml;ckzugeben. Ein einfaches Beispiel:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>fld<span style=\"color:blue;\"> As <\/span>Shell32.Folder\r\n<span style=\"color:blue;\">Set<\/span> fld = oShell.NameSpace(\"c:\\\")<\/pre>\n<p>Hier bekommen wir ein virtuelles Objekt mit Bezug auf den physischen Ordner <b>c:<\/b>. Virtuell deshalb, weil ein <b>Folder<\/b>-Objekt nicht nur ein Element des Dateisystems darstellen kann, sondern abstrakt zum Beispiel auch die Drucker der Systemsteuerung. <\/p>\n<p>Das <b>Folder<\/b>-Objekt hat verschiedene Eigenschaften, von der die <b>Title<\/b>-Eigenschaft vielleicht die wichtigste ist:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> fld = oShell.NameSpace(\"c:\\\")\r\n<span style=\"color:blue;\">Debug.Print<\/span> fld.Title\r\n&gt; \"(C:) Windows 7\"<\/pre>\n<p>Leider gibt <b>Title<\/b> die Bezeichnung des Folders zur&uuml;ck, nicht den Pfadnamen allein. Deshalb ist ein kleiner Umstand n&ouml;tig. Die Eigenschaft <b>Self<\/b> des <b>Folder<\/b>-Objekts stellt ein neues Objekt der Klasse <b>FolderItem<\/b> dar, welche wiederum die Eigenschaft <b>Path<\/b> kennt. Den Pfad eines Folders ermittelt man demnach so:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> fld = oShell.NameSpace(\"c:\\\")\r\n<span style=\"color:blue;\">Debug.Print<\/span> fld.Self.Path\r\n&gt; \"c:\\\"<\/pre>\n<p>Statt des Strings zur Pfadangabe kann &#8211; Sie werden es sich denken k&ouml;nnen &#8211; auch eine <b>SpecialFolder-GUID<\/b> als Parameter &uuml;bergeben werden:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>sGUID<span style=\"color:blue;\"> As String<\/span>\r\nsGUID = \"::{21EC2020-3AEA-1069-A2DD-08002B30309D}\"\r\n<span style=\"color:blue;\">Set<\/span> fld = oShell.NameSpace(sGUID)\r\n<span style=\"color:blue;\">Debug.Print<\/span> fld.Title\r\n&gt; \"Systemsteuerung\"\r\n<span style=\"color:blue;\">Debug.Print<\/span> fld.Self.Path\r\n&gt; \"::{21EC2020-3AEA-1069-A2DD-08002B30309D}\"<\/pre>\n<p>Und schlie&szlig;lich wurde erw&auml;hnt, dass auch eine Zahl als Parameter f&uuml;r <b>NameSpace<\/b> dienen kann. Testen Sie das:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> fld = oShell.NameSpace (0)\r\n<span style=\"color:blue;\">Debug.Print<\/span> fld.Title\r\n&gt; \"Desktop\"\r\n<span style=\"color:blue;\">Debug.Print<\/span> fld.Self.Path\r\n&gt; \"C:\\Users\\Minhorst\\Desktop\"<\/pre>\n<p>Die <b>0<\/b> entspricht also dem Desktop-Ordner Ihres Windows-Kontos. Die Zahlen, die hier &uuml;bergeben werden k&ouml;nnen, sind im Bereich von 0 bis 255. Es handelt sich um <b>IDs<\/b> von Windows-Spezialverzeichnissen, eben der<b> Special Folders<\/b>. Dies gibt uns die M&ouml;glichkeit, alle Spezialordner von Windows in einer Schleife zu enumerieren:<\/p>\n<pre>For i = 0 To 255\r\n     <span style=\"color:blue;\">Set<\/span> fld = oShell.NameSpace(i)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> i, fld.Title\r\n     <span style=\"color:blue;\">Debug.Print<\/span> i, fld.Self.Path\r\n<span style=\"color:blue;\">Next<\/span> i<\/pre>\n<p>Heraus kommt dabei ungef&auml;hr das:<\/p>\n<pre>0  Desktop   C:\\Users\\Minhorst\\Desktop\r\n1  Internet  ::{871C5380-42A0-1069-A2EA-08002B30309D}\r\n2  Programme C:\\Users\\Minhorst\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\r\n3  Systemsteuerung ::{21EC2020-3AEA-1069-A2DD-08002B30309D}\r\n5  Dokumente C:\\Users\\Sascha\\Documents\r\n...<\/pre>\n<p>Neben der Bezeichnung der virtuellen Ordner, die teilweise lokalisiert und teilweise Englisch ist, erhalten Sie also auch den Pfad jedes Elements, der entweder als Dateisystempfad oder als <b>GUID<\/b> daher kommt. Auf diese Weise ermitteln Sie selbst alle Pfade von Spezialordnern von Windows, und damit kehren wir zur&uuml;ck zum Aufruf des Explorers.<\/p>\n<p>Um den Explorer mit dem Desktop zu &ouml;ffnen, k&ouml;nnen Sie einfach diese Zeile aufrufen:<\/p>\n<pre>oShell.ShellExecute _\r\n     \"explorer.exe\", _\r\n     oShell.NameSpace(0). _\r\n     Self.Path<\/pre>\n<p>Das bedeutet, dass Sie sich um die Ermittlung des Pfads oder der <b>GUIDs<\/b>  von Spezialordnern nicht weiter k&uuml;mmern m&uuml;ssen, um diese im Explorer zu &ouml;ffnen. Die Zahl zur <b>Folder-ID <\/b>reicht aus. Zu erw&auml;hnen w&auml;re noch, dass es nicht zu allen Zahlen im Bereich von 0 bis 255 eine Spezialordnerentsprechung gibt.<\/p>\n<p>Der Aufruf von <b>Namespace<\/b> mit einer solchen ung&uuml;ltigen Zahl f&uuml;hrt in der Schleife zu einem Fehler. Deshalb muss ihr ein <b>On Error Resume Next <\/b>vorangestellt werden, um diese Fehler zu ignorieren.<\/p>\n<p>Damit die ganze Geschichte noch anschaulicher wird, enth&auml;lt die Beispieldatenbank im Modul <b>mdlShell<\/b> einige Prozeduren, mit denen die Spezialordner in Tabellen geschrieben werden k&ouml;nnen. Wegen ihres Umfangs lassen wir ihre Darstellung in Listings hier ausnahmsweise au&szlig;en vor.<\/p>\n<p>Rufen Sie etwa die Prozedur <b>StoreSpecialFolders<\/b> auf, so schreibt diese die gew&uuml;nschten Angaben in die Tabelle <b>tblShellFolders<\/b>. Das Ergebnis sieht aus wie in Bild 1. In der Spalte <b>SFID<\/b> stehen die Nummern der Ordner, in <b>Name<\/b> deren Bezeichnung und unter <b>Path<\/b> der Pfad. Unter jedem Windows-Konto kommen hier unterschiedliche Werte heraus!<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_05\/tblShellFolders.png\" alt=\" Die Windows-Spezialordner sind in der Tabelle tblShellFolders abgespeichert\" width=\"649,4275\" height=\"346,096\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1:  Die Windows-Spezialordner sind in der Tabelle tblShellFolders abgespeichert<\/span><\/b><\/p>\n<p>Um die Angelegenheit noch weiter aufzubohren, existieren in der Datenbank drei weitere Tabellen, die sich um die speziellen GUID-Ordner ranken. Das Datenmodell finden Sie in Bild 2.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_05\/rellayout.png\" alt=\" Die drei Tabellen der Beispieldatenbank rund um Windows-Spezialordner\" width=\"549,5155\" height=\"169,9342\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2:  Die drei Tabellen der Beispieldatenbank rund um Windows-Spezialordner<\/span><\/b><\/p>\n<p>Die Tabelle <b>tblSpecialFolders<\/b> gleicht in ihrem Aufbau der <b>tblShellFolders<\/b>, nur dass hier ausschlie&szlig;lich die virtuellen GUID-Ordner abgespeichert werden (s. Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_05\/tblSpecialFolders.png\" alt=\" Alle ermittelten GUID-Spezialordner finden sich nach Aufruf von NameSpacesToTable in der Tabelle tblSpecialFolders\" width=\"700\" height=\"191,625\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3:  Alle ermittelten GUID-Spezialordner finden sich nach Aufruf von NameSpacesToTable in der Tabelle tblSpecialFolders<\/span><\/b><\/p>\n<p>Sie f&uuml;llen sie &uuml;ber die Prozedur <b>NameSpacesToTable<\/b>.<\/p>\n<p>Da ein Ordner sowohl Elemente als auch Unterordner enthalten kann, enumeriert die Routine <b>NamespaceFoldersToTable<\/b> auch diese, um sie in der verkn&uuml;pften Tabelle <b>tblSpecialSubFolders<\/b> zu speichern (s. Ausschnitt in Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_05\/tblSpecialSubfolders.png\" alt=\" Die Unterordner der virtuellen GUID-Ordner speichert eine Routine in der Tabelle tblSpecialSubFolders\" width=\"700\" height=\"197,8587\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4:  Die Unterordner der virtuellen GUID-Ordner speichert eine Routine in der Tabelle tblSpecialSubFolders<\/span><\/b><\/p>\n<p>Hier sind etwa die einzelnen Elemente der Systemsteuerung zu finden, wobei es sich dabei nur teilweise um Unterordner handelt. Die <b>Energieoptionen<\/b> etwa sind kein Ordner, sondern ein Ordnerelement (<b>FolderItem<\/b>).<\/p>\n<p>Hingegen handelt es sich bei der <b>Verwaltung<\/b> tats&auml;chlich um einen virtuellen Ordner, der seinerseits Elemente wie die <b>Ereignisanzeige<\/b> oder den <b>ODBC-Datenquellenadministrator<\/b> enth&auml;lt.<\/p>\n<p>Damit auch diese Elemente in die &uuml;bersicht gelangen, enumeriert die Routine <b>NamespaceFolderItems<\/b> alle Elemente aller Unterordner und speichert diese in der Tabelle <b>tblSpecialItems<\/b> (s. Bild 5). Sie sehen, dass damit etwa auch alle installierten Drucker aufgef&uuml;hrt werden. Zu Laufwerken werden sowohl deren Ordner, wie auch etwaige Dateien aufgef&uuml;hrt. Bei unserem Test f&uuml;llte sich die Tabelle deshalb mit &uuml;ber 2.000 Datens&auml;tzen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_05\/tblSpecialItems.png\" alt=\" Die eigentlichen Elemente der Spezialordner in der Tabelle tblSpecialItems\" width=\"549,5155\" height=\"256,6364\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5:  Die eigentlichen Elemente der Spezialordner in der Tabelle tblSpecialItems<\/span><\/b><\/p>\n<p>Nachdem alle Routinen durchlaufen wurden, kann die Tabelle <b>tblSpecialFolders<\/b> als Datenblatt ge&ouml;ffnet werden und zeigt dabei die Detailtabellen, hierarchisch gem&auml;&szlig; den Tabellenbeziehungen, als Unterdatenbl&auml;tter an, wie Bild 6 demonstriert. Die <b>Systemsteuerung<\/b> enth&auml;lt die Auflistung <b>Verwaltung<\/b> und diese selbst 16 Elemente.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_05\/subdatasheets.png\" alt=\" Hierarchische Anzeige in der Tabelle tblSpecialFolders\" width=\"700\" height=\"262,8285\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6:  Hierarchische Anzeige in der Tabelle tblSpecialFolders<\/span><\/b><\/p>\n<h2>Shell-Verbs<\/h2>\n<p>Der Aufruf des Explorers &uuml;ber das <b>Shell-Objekt<\/b>, statt &uuml;ber die <b>Shell-Anweisung<\/b> von VBA, hatte noch einen weiteren Vorteil. Das <b>open-Verb<\/b> f&uuml;hrt zu normalem &ouml;ffnen der Anwendung. Doch hier lassen sich, je nach Anwendung, auch andere <b>Verben<\/b> einsetzen. Ein recht spezieller Fall ist das <b>Verb<\/b> <b>runas<\/b>.<\/p>\n<p>Das sagt Windows, dass die Anwendung im Adminstratorkontext gestartet werden soll, nicht im Benutzerkontext. F&uuml;hrt man dies aus, so meldet sich Windows mit der &uuml;blichen <b>UAC<\/b>-Sicherheitsabfrage, die das Starten des Prozesses erst einmal best&auml;tigen l&auml;sst.<\/p>\n<p>Bei Bejahung hat man mit dieser Zeile ein Explorer-Fenster ge&ouml;ffnet, das administrative Vorg&auml;nge zul&auml;sst:<\/p>\n<pre>oShell.ShellExecute \"explorer.exe\", , , \"runas\", 1<\/pre>\n<p>Selbstverst&auml;ndlich k&ouml;nnten Sie auch hier weitere Angaben zu den &ouml;ffnungsoptionen und Pfaden machen.<\/p>\n<p>Nebenbei l&auml;sst sich &uuml;ber dieses <b>Verb<\/b> auch eine neue Instanz von Access selbst starten, die &uuml;ber administrative Rechte verf&uuml;gt:<\/p>\n<pre>oShell.ShellExecute _\r\n     SysCmd(acSysCmdAccessDir) & _\r\n     \"msaccess.exe\", , , \"runas\", 1<\/pre>\n<p>Diese Instanz und ihre VBA-Routinen k&ouml;nnten dann &#8211; einen sch&ouml;nen Gru&szlig; an die Hacker unter Ihnen! &#8211; etwa auch in gesch&uuml;tzte Systemverzeichnisse schreiben.<\/p>\n<p>Mit dem Aufruf des Explorers haben die folgenden Ausf&uuml;hrungen nichts mehr zu tun, wir m&ouml;chten Ihnen die Hintergr&uuml;nde zu <b>Shell-Verben<\/b> aber nicht vorenthalten. Listing 4 zeigt eine Prozedur, die alle m&ouml;glichen Verben eines Druckers ausgibt.<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>SFVerbs()\r\n     <span style=\"color:blue;\">Dim <\/span>fld<span style=\"color:blue;\"> As <\/span>Folder\r\n     <span style=\"color:blue;\">Dim <\/span>itm <span style=\"color:blue;\"> As <\/span>FolderItem\r\n     <span style=\"color:blue;\">Dim <\/span>vrb<span style=\"color:blue;\"> As <\/span>FolderItemVerb\r\n     \r\n     <span style=\"color:blue;\">Set<\/span> fld = oShell.NameSpace(4)\r\n     <span style=\"color:blue;\">Set<\/span> itm = fld.Items.Item(1)\r\n     For Each vrb In itm.Verbs\r\n         <span style=\"color:blue;\">Debug.Print<\/span> vrb.Name\r\n     <span style=\"color:blue;\">Next<\/span> vrb\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Ausgeben aller Verben eines bestimmten Druckers<\/span><\/b><\/p>\n<p>Zun&auml;chst wird das <b>Folder<\/b>-Objekt <b>fld<\/b> auf den virtuellen Drucker-Ordner von Windows gesetzt, der durch die <b>Special Folders-ID<\/b> <b>4<\/b> bestimmt ist. Dann nimmt die Prozedur den ersten Drucker, das erste Element in Gestalt des <b>FolderItems<\/b> <b>1<\/b>, und enumeriert in einer <b>For-Each<\/b>-Schleife alle <b>Verben<\/b>  (Objektvariable <b>vrb<\/b>) dieses <b>Shell<\/b>-Objekts, um sie im VBA-Direktfenster auszugeben. Jedes <b>FolderItem<\/b>-Objekt hat diese Auflistungseigenschaft <b>Verbs<\/b>.<\/p>\n<p>Als Ergebnis erhalten Sie etwa diese Liste:<\/p>\n<pre>&ouml;&ffnen\r\nAls &Standarddrucker festlegen\r\n&Druckeinstellungen...\r\nDrucker &anhalten\r\nFrei&geben...\r\nDrucker &offline verwenden\r\nA&ktualisieren\r\nVe&rkn&uuml;pfung erstellen\r\n&L&ouml;schen\r\n&Umbenennen\r\nE&igenschaften<\/pre>\n<p>Sie k&ouml;nnten auch etwa das <b>Folder<\/b>-Objekt auf einen Dateipfad setzen und bek&auml;men dann eine ganz andere Liste zu Gesicht.<\/p>\n<p>Bedauerlicherweise handelt es sich hier um lokalisierte Verben, die sich nicht direkt als Verb f&uuml;r <b>ShellExecute<\/b> einsetzen lassen. Es gibt auch keine &uuml;bersetzungsfunktion. Eine g&uuml;ltige Liste der Verben f&uuml;r <b>ShellExecute<\/b> ist jedenfalls diese:<\/p>\n<pre>open - &ouml;ffnen\r\nedit - Bearbeiten\r\ncopy - Kopieren\r\ncut - Ausschneiden\r\nprint - Ausdrucken\r\nrunas - Als Administrator starten\r\nproperties - Eigenschaften anzeigen\r\nfind - Suchen-Dialog anzeigen<\/pre>\n<p>Diese Verben funktionieren nur bei bestimmten <b>Shell<\/b>-Objekten. F&uuml;r die <b>explorer.exe<\/b> etwa machen das Ausschneiden oder Drucken keinen Sinn.<\/p>\n<p>F&uuml;r DVD-Laufwerksobjekte hingegen g&auml;be es auch noch das Verb <b>eject<\/b>, welches die Laufwerksschublade &ouml;ffnet.<\/p>\n<p>Unterschlagen haben wir bisher auch, dass sich <b>ShellExecute<\/b> im Gegensatz zu <b>VBA-Shell<\/b> nicht nur auf ausf&uuml;hrbare Dateien beschr&auml;nkt, sondern mit allen Dateitypen funktioniert. <\/p>\n<p>&uuml;bergeben Sie als Argument etwa eine Textdatei, so &ouml;ffnet sich diese mit der verkn&uuml;pften Anwendung &#8211; vermutlich <b>Notepad<\/b>. Listing 5 zeigt, wie auf ein <b>FolderItem<\/b> zur Datei <b>sample.txt<\/b> zwei unterschiedliche Verben angewandt werden.<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>InvokeAVerb()\r\n     <span style=\"color:blue;\">Dim <\/span>fld<span style=\"color:blue;\"> As <\/span>Folder\r\n     <span style=\"color:blue;\">Dim <\/span>itm <span style=\"color:blue;\"> As <\/span>FolderItem\r\n     <span style=\"color:blue;\">Dim <\/span>vrb<span style=\"color:blue;\"> As <\/span>FolderItemVerb\r\n     \r\n     <span style=\"color:blue;\">Set<\/span> fld = oShell.NameSpace(CurrentProject.Path)\r\n     <span style=\"color:blue;\">Set<\/span> itm = fld.Items.Item(\"sample.txt\")\r\n     For Each vrb In itm.Verbs\r\n''''        <span style=\"color:blue;\">Debug.Print<\/span> vrb.Name\r\n     <span style=\"color:blue;\">Next<\/span> vrb\r\n     itm.InvokeVerb \"edit\"\r\n     itm.InvokeVerb \"properties\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Verben ausf&uuml;hren<\/span><\/b><\/p>\n<p>Seine Methode <b>InvokeVerb<\/b> l&auml;sst die <b>Shell<\/b>-Aktion ausf&uuml;hren, wobei hier einmal <b>edit<\/b> f&uuml;r <b>Bearbeiten<\/b> und einmal <b>properties<\/b> zur Anzeige des Eigenschaftendialogs der Datei eingesetzt sind.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Wann immer Sie von einer Access-Anwendung aus auf Anweisung des Benutzers Dateien erstellen lassen, die der Benutzer weiterverarbeiten soll, macht es sich sehr gut, wenn der Benutzer &#8211; zumindest optional &#8211; gleich den Windows-Explorer mit dem Ordner angezeigt bekommt, in dem die Datei gelandet ist.<\/p>\n<p>Anwendungsf&auml;lle hierf&uuml;r gibt es gen&uuml;gend. Wenn der Benutzer beispielsweise einen vorgefertigten XML-Export auf Basis der aktuellen Daten exportiert, um diesen gleich im Anschluss in ein anderes Programm einzupflegen, das sich nicht direkt von Access aus f&uuml;ttern l&auml;sst, wird er sich freuen, wenn er das Export-Verzeichnis nicht extra noch &ouml;ffnen muss. Stattdessen bekommt er direkt den Windows Explorer mit dem entsprechenden Verzeichnis und der markierten Datei pr&auml;sentiert.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>ExplorerCmd.accdb<\/p>\n<p>Sample.txt<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/31C16BE9-52BD-478A-9BB1-F3A10AB8F1F0\/aiu_1059.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hin und wieder kommt es vor, dass Sie aus Access heraus den Windows Explorer &ouml;ffnen und dabei gleich ein Verzeichnis Ihrer Wahl ansteuern m&ouml;chten. Gr&uuml;nde daf&uuml;r gibt es viele. Haben Sie etwa eine Textdatei exportiert, so macht es sich gut, dem Anwender anschlie&szlig;end gleich den passenden Ordner zu pr&auml;sentieren und dort die Datei zu markieren. &Uuml;ber einige Zeilen VBA-Code rund um ein Shell-Objekt ist das schnell realisiert.<\/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":[662016,66052016,44000025],"tags":[],"class_list":["post-55001059","post","type-post","status-publish","format-standard","hentry","category-662016","category-66052016","category-VBA_und_Programmiertechniken"],"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>Explorer und Shell ansteuern - 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\/Explorer_und_Shell_ansteuern\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Explorer und Shell ansteuern\" \/>\n<meta property=\"og:description\" content=\"Hin und wieder kommt es vor, dass Sie aus Access heraus den Windows Explorer &ouml;ffnen und dabei gleich ein Verzeichnis Ihrer Wahl ansteuern m&ouml;chten. Gr&uuml;nde daf&uuml;r gibt es viele. Haben Sie etwa eine Textdatei exportiert, so macht es sich gut, dem Anwender anschlie&szlig;end gleich den passenden Ordner zu pr&auml;sentieren und dort die Datei zu markieren. &Uuml;ber einige Zeilen VBA-Code rund um ein Shell-Objekt ist das schnell realisiert.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T15:25:27+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/d552c971e00b42658da0df2004b317b4\" \/>\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=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Explorer und Shell ansteuern\",\"datePublished\":\"2020-05-22T15:25:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/\"},\"wordCount\":2844,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/d552c971e00b42658da0df2004b317b4\",\"articleSection\":[\"2016\",\"5\\\/2016\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/\",\"name\":\"Explorer und Shell ansteuern - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/d552c971e00b42658da0df2004b317b4\",\"datePublished\":\"2020-05-22T15:25:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/d552c971e00b42658da0df2004b317b4\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/d552c971e00b42658da0df2004b317b4\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Explorer_und_Shell_ansteuern\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Explorer und Shell ansteuern\"}]},{\"@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":"Explorer und Shell ansteuern - 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\/Explorer_und_Shell_ansteuern\/","og_locale":"de_DE","og_type":"article","og_title":"Explorer und Shell ansteuern","og_description":"Hin und wieder kommt es vor, dass Sie aus Access heraus den Windows Explorer &ouml;ffnen und dabei gleich ein Verzeichnis Ihrer Wahl ansteuern m&ouml;chten. Gr&uuml;nde daf&uuml;r gibt es viele. Haben Sie etwa eine Textdatei exportiert, so macht es sich gut, dem Anwender anschlie&szlig;end gleich den passenden Ordner zu pr&auml;sentieren und dort die Datei zu markieren. &Uuml;ber einige Zeilen VBA-Code rund um ein Shell-Objekt ist das schnell realisiert.","og_url":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T15:25:27+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/d552c971e00b42658da0df2004b317b4","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Explorer und Shell ansteuern","datePublished":"2020-05-22T15:25:27+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/"},"wordCount":2844,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/d552c971e00b42658da0df2004b317b4","articleSection":["2016","5\/2016","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/","url":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/","name":"Explorer und Shell ansteuern - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/d552c971e00b42658da0df2004b317b4","datePublished":"2020-05-22T15:25:27+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/d552c971e00b42658da0df2004b317b4","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/d552c971e00b42658da0df2004b317b4"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Explorer_und_Shell_ansteuern\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Explorer und Shell ansteuern"}]},{"@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\/55001059","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=55001059"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001059\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}