{"id":55001394,"date":"2022-12-01T00:00:00","date_gmt":"2022-12-01T11:15:53","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1394"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Dateien_per_VBA_oeffnen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Dateien_per_VBA_oeffnen\/","title":{"rendered":"Dateien per VBA &ouml;ffnen"},"content":{"rendered":"<p><b>Es gibt viele Gelegenheiten, zu denen man gern eine Datei per VBA &ouml;ffnen m&ouml;chte. Ein gutes Beispiel ist ein soeben auf Basis eines Berichts erstelltes PDF-Dokument. Doch der Standardumfang von VBA liefert keine M&ouml;glichkeit, diese Aufgabe zu erledigen. Und tats&auml;chlich ist das Anzeigen einer Datei nicht trivial, zumindest dann nicht, wenn wir vorher noch nicht wissen, welchen Dateityp die Datei hat und mit welcher Anwendung diese ge&ouml;ffnet werden soll. Allerdings wei&szlig; Windows ja auch meistens, mit welcher Anwendung eine Datei ge&ouml;ffnet werden soll, wenn wir diese im Windows Explorer doppelt anklicken. Also muss es einen Weg geben, diese Aufgabe per Code zu erledigen. Und die L&ouml;sung ist eine API-Funktion namens ShellExecute.<\/b><\/p>\n<h2>Beispieltabelle mit Dateiinformationen<\/h2>\n<p>Zu Beispielzwecken haben wir einer Datenbank eine Tabelle namens <b>tblDateien <\/b>hinzugef&uuml;gt. Diese sieht wie in Bild 1 aus und enth&auml;lt neben einer Bezeichnung den Namen von Dateien. Auf Pfadangaben haben wir der besseren Nutzbarkeit der Beispieldatenbank halber verzichtet und gehen davon aus, dass die angegebenen Dateien sich im gleichen Verzeichnis wie die Datenbank befinden. Auf diese Weise k&ouml;nnen wir in den folgenden Beispielen per Code unter Zuhilfenahme von <b>CurrentProject.Path <\/b>auf die Dateien zugreifen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_06\/pic_1394_001.png\" alt=\"Tabelle mit Dateiangaben\" width=\"499,5589\" height=\"213,1597\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Tabelle mit Dateiangaben<\/span><\/b><\/p>\n<h2>Formular zum Anzeigen der Beispieldateien<\/h2>\n<p>Um die Funktion zum Anzeigen der Dateien einfach aufrufen zu k&ouml;nnen, erstellen wir ein Formular, dass die Daten der Tabelle <b>tblDateien <\/b>anzeigt und eine Schaltfl&auml;che bereitstellt, mit der wir die Datei anzeigen k&ouml;nnen (siehe Bild 2). Diese Schaltfl&auml;che hei&szlig;t <b>cmdDateiOeffnen<\/b>. Gleich f&uuml;gen wir der Schaltfl&auml;che den Code zum &Ouml;ffnen der Datei aus dem Feld <b>Dateiname <\/b>hinzu.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_06\/pic_1394_002.png\" alt=\"Entwurf eines Formulars zur Anzeige von Dateien in der jeweiligen Anwendung\" width=\"499,5589\" height=\"222,0262\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Entwurf eines Formulars zur Anzeige von Dateien in der jeweiligen Anwendung<\/span><\/b><\/p>\n<h2>API-Funktion zum Anzeigen von Dateien<\/h2>\n<p>F&uuml;r das Anzeigen von Dateien ben&ouml;tigen wir die API-Funktion <b>ShellExecuteA<\/b>. Diese deklarieren wir wie in Listing 1 in zweifacher Ausf&uuml;hrung, einmal f&uuml;r Access-Versionen, die ein &auml;lteres VBA verwenden und einmal f&uuml;r die aktuellen Fassungen. Die Deklaration platzieren wir oben in einem neuen Standardmodul namens <b>mdlDateienAnzeigen<\/b>. Der Unterschied besteht in der Verwendung des Schl&uuml;sselworts <b>PtrSafe <\/b>sowie dem Datentyp <b>LongPtr <\/b>f&uuml;r den Parameter <b>hWnd<\/b> bei der Version f&uuml;r aktuelles VBA.<\/p>\n<pre>#If VBA7 Then\r\n     <span style=\"color:blue;\">Public <\/span>Declare PtrSafe Function ShellExecuteA Lib \"Shell32\" (ByVal hWnd<span style=\"color:blue;\"> As Long<\/span>Ptr, ByVal lpOperation<span style=\"color:blue;\"> As String<\/span>, _\r\n       ByVal lpFile<span style=\"color:blue;\"> As String<\/span>, ByVal lpParameters<span style=\"color:blue;\"> As String<\/span>, ByVal lpDirectory<span style=\"color:blue;\"> As String<\/span>, ByVal nCmdShow<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As Long<\/span>\r\n#Else\r\n     <span style=\"color:blue;\">Public <\/span>Declare Function ShellExecuteA Lib \"Shell32\" (ByVal hWnd<span style=\"color:blue;\"> As Long<\/span>, ByVal lpOperation<span style=\"color:blue;\"> As String<\/span>, ByVal _\r\n        lpFile<span style=\"color:blue;\"> As String<\/span>, ByVal lpParameters<span style=\"color:blue;\"> As String<\/span>, ByVal lpDirectory<span style=\"color:blue;\"> As String<\/span>, ByVal nCmdShow<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As Long<\/span>\r\n#End If<\/pre>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Deklaration der API-Funktion ShellExecute f&uuml;r 32-Bit und 64-Bit-VBA<\/span><\/b><\/p>\n<p>Die Funktion erwartet einige Parameter, die wir uns hier anschauen:<\/p>\n<ul>\n<li><b>hWnd<\/b>: Erwartet ein Handle auf das aufrufende Fenster. Hier k&ouml;nnen wir den Wert <b>0<\/b> &uuml;bergeben.<\/li>\n<li><b>lpOperation<\/b>: Erwartet eine Zeichenkette mit der auszuf&uuml;hrenden Operation. F&uuml;r unsere Aufgabe, eine Datei anzuzeigen, verwenden wir hier den Wert <b>Open<\/b>.<\/li>\n<li><b>lpFile<\/b>: Nimmt den Pfad zu der anzuzeigenden Datei entgegen.<\/li>\n<li><b>lpParameters<\/b>: Parameter, den wir hier nicht ben&ouml;tigen und deshalb mit <b>vbNullString <\/b>f&uuml;llen<\/li>\n<li><b>lpDirectory<\/b>: Parameter, den wir hier nicht ben&ouml;tigen und deshalb mit <b>vbNullString <\/b>f&uuml;llen<\/li>\n<li><b>nCmdShow<\/b>: Erwartet eine Konstante f&uuml;r den Anzeigemodus.<\/li>\n<\/ul>\n<p>Die m&ouml;glichen Werte f&uuml;r <b>nCmdShow <\/b>lauten:<\/p>\n<ul>\n<li><b>SW_HIDE <\/b>(<b>0<\/b>): &Ouml;ffnet die Datei im versteckten Modus.<\/li>\n<li><b>SW_MAXIMIZE <\/b>(<b>3<\/b>): &Ouml;ffnet das Fenster mit der Datei im maximierten Zustand.<\/li>\n<li><b>SW_MINIMIZE <\/b>(<b>6<\/b>): Zeigt das Fenster minimiert an.<\/li>\n<li><b>SW_NORMAL <\/b>(<b>1<\/b>): Aktiviert das Fenster beim &Ouml;ffnen.<\/li>\n<li><b>SW_SHOW <\/b>(<b>5<\/b>): Einfache Anzeige.<\/li>\n<li><b>SW_RESTORE <\/b>(<b>9<\/b>): Stellt die Fenstergr&ouml;&szlig;e wieder her.<\/li>\n<li><b>SW_SHOWMAXIMIZED <\/b>(<b>3<\/b>): Zeigt das Fenster an und maximiert es.<\/li>\n<li><b>SW_SHOWMINIMIZED <\/b>(<b>2<\/b>): Zeigt das Fenster an und minimiert es.<\/li>\n<li><b>SW_SHOWMINNOACTIVE <\/b>(<b>7<\/b>): Minimiert das Fenster und aktiviert es nicht<\/li>\n<li><b>SW_SHOWNA <\/b>(<b>8<\/b>): Zeigt das Fenster an, aber aktiviert es nicht.<\/li>\n<li><b>SW_SHOWNOACTIVATE <\/b>(<b>4<\/b>): Zeigt das Fenster an, ohne es zu aktivieren.<\/li>\n<li><b>SW_SHOWNORMAL <\/b>(<b>1<\/b>): Zeigt das Fenster und aktiviert es.<\/li>\n<\/ul>\n<p>Damit wir die Konstanten statt der Zahlenwerte angeben k&ouml;nnen, deklarieren wir diese oberhalb der API-Deklaration im gleichen Modul:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>Const SW_HIDE = 0\r\n<span style=\"color:blue;\">Public <\/span>Const SW_MAXIMIZE = 3\r\n<span style=\"color:blue;\">Public <\/span>Const SW_MINIMIZE = 6\r\n<span style=\"color:blue;\">Public <\/span>Const SW_NORMAL = 1\r\n<span style=\"color:blue;\">Public <\/span>Const SW_SHOW = 5\r\n<span style=\"color:blue;\">Public <\/span>Const SW_RESTORE = 9\r\n<span style=\"color:blue;\">Public <\/span>Const SW_SHOWMAXIMIZED = 3\r\n<span style=\"color:blue;\">Public <\/span>Const SW_SHOWMINIMIZED = 2\r\n<span style=\"color:blue;\">Public <\/span>Const SW_SHOWMINNOACTIVE = 7\r\n<span style=\"color:blue;\">Public <\/span>Const SW_SHOWNA = 8\r\n<span style=\"color:blue;\">Public <\/span>Const SW_SHOWNOACTIVATE = 4\r\n<span style=\"color:blue;\">Public <\/span>Const SW_SHOWNORMAL = 1<\/pre>\n<h2>R&uuml;ckgabewerte der API-Funktion ShellExecuteA<\/h2>\n<p>Die API-Funktion soll in unserem Fall zwar eigentlich nur eine Datei anzeigen, aber sie liefert auch noch einen R&uuml;ckgabewert. Dieser kann die folgenden Werte annehmen &#8211; hier direkt in der Form, wie wir sie im Modul deklarieren wollen:<\/p>\n<pre><span style=\"color:blue;\">Public <\/span>Const ERROR_BAD_FORMAT = 11&\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_ACCESSDENIED = 5\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_ASSOCINCOMPLETE = 27\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_DDEBUSY = 30\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_DDEFAIL = 29\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_DDETIMEOUT = 28\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_DLLNOTFOUND = 32\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_FNF = 2\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_NOASSOC = 31\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_OOM = 8\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_PNF = 3\r\n<span style=\"color:blue;\">Public <\/span>Const SE_ERR_SHARE = 26<\/pre>\n<h2>Dateien anzeigen<\/h2>\n<p>Damit wollen wir nun endlich einen Aufruf dieser API-Funktion programmieren. Diesen hinterlegen wir wie folgt f&uuml;r die Schaltfl&auml;che <b>cmdDateiOeffnen<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdDateiOeffnen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>strPath<span style=\"color:blue;\"> As String<\/span>\r\n     strPath = CurrentProject.Path & \"\\\" & Me!Dateiname\r\n     ShellExecuteA 0, \"Open\", strPath, vbNullString, _\r\n         vbNullString, SW_NORMAL\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Dies &ouml;ffnet die aktuell im Feld <b>Dateiname <\/b>angegebene Datei, sofern sich diese im Datenbankverzeichnis befindet.<\/p>\n<h2>Fehler bei nicht vorhandener Datei abfangen<\/h2>\n<p>Wenn die Datei nicht vorhanden ist, soll der Benutzer eine Meldung dar&uuml;ber erhalten.<\/p>\n<p>Dazu erweitern wir die Funktion um eine Variable f&uuml;r das Ergebnis des <b>ShellExecuteA<\/b>-Aufrufs und werten das Ergebnis in einer <b>Select Case<\/b>-Bedingung aus:<\/p>\n<pre>...\r\n<span style=\"color:blue;\">Dim <\/span>lngResult<span style=\"color:blue;\"> As Long<\/span>\r\nstrPath = CurrentProject.Path & \"\\\" & Me!Dateiname\r\nlngResult = ShellExecuteA(0, \"Open\", strPath, _\r\n     vbNullString, vbNullString, SW_NORMAL)\r\nSelect Case lngResult\r\n     <span style=\"color:blue;\">Case <\/span>SE_ERR_FNF\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Die Datei ''\" & strPath _\r\n             & \"'' konnte nicht gefunden werden.\"\r\n     <span style=\"color:blue;\">Case Else<\/span>\r\n         <span style=\"color:blue;\">Debug.Print<\/span> lngResult\r\n<span style=\"color:blue;\">End Select<\/span>\r\n...<\/pre>\n<p>Dies liefert die Fehlermeldung aus Bild 3, wenn die Datei nicht gefunden werden kann.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2022_06\/pic_1394_003.png\" alt=\"Fehlermeldung beim Versuch, eine nicht vorhandene Datei zu &ouml;ffnen\" width=\"499,5589\" height=\"261,0008\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Fehlermeldung beim Versuch, eine nicht vorhandene Datei zu &ouml;ffnen<\/span><\/b><\/p>\n<p>Andere m&ouml;gliche Fehler kann man je nach Anforderung in Form weiterer <b>Case<\/b>-Zweige integrieren.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Beispiel.docx<\/p>\n<p>Beispiel.pdf<\/p>\n<p>Beispiel.png<\/p>\n<p>DateienAnzeigen.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/F2B889B2-81F3-4FD2-8EA2-D8418E4B9441\/aiu_1394.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt viele Gelegenheiten, zu denen man gern eine Datei per VBA &ouml;ffnen m&ouml;chte. Ein gutes Beispiel ist ein soeben auf Basis eines Berichts erstelltes PDF-Dokument. Doch der Standardumfang von VBA liefert keine M&ouml;glichkeit, diese Aufgabe zu erledigen. Und tats&auml;chlich ist das Anzeigen einer Datei nicht trivial, zumindest dann nicht, wenn wir vorher noch nicht wissen, welchen Dateityp die Datei hat und mit welcher Anwendung diese ge&ouml;ffnet werden soll. Allerdings wei&szlig; Windows ja auch meistens, mit welcher Anwendung eine Datei ge&ouml;ffnet werden soll, wenn wir diese im Windows Explorer doppelt anklicken. Also muss es einen Weg geben, diese Aufgabe per Code zu erledigen. Und die L&ouml;sung ist eine API-Funktion namens ShellExecute.<\/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":[662022,66052022,66062022,44000025],"tags":[],"class_list":["post-55001394","post","type-post","status-publish","format-standard","hentry","category-662022","category-66052022","category-66062022","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Dateien per VBA &ouml;ffnen - 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\/?p=55001394\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dateien per VBA &ouml;ffnen\" \/>\n<meta property=\"og:description\" content=\"Es gibt viele Gelegenheiten, zu denen man gern eine Datei per VBA &ouml;ffnen m&ouml;chte. Ein gutes Beispiel ist ein soeben auf Basis eines Berichts erstelltes PDF-Dokument. Doch der Standardumfang von VBA liefert keine M&ouml;glichkeit, diese Aufgabe zu erledigen. Und tats&auml;chlich ist das Anzeigen einer Datei nicht trivial, zumindest dann nicht, wenn wir vorher noch nicht wissen, welchen Dateityp die Datei hat und mit welcher Anwendung diese ge&ouml;ffnet werden soll. Allerdings wei&szlig; Windows ja auch meistens, mit welcher Anwendung eine Datei ge&ouml;ffnet werden soll, wenn wir diese im Windows Explorer doppelt anklicken. Also muss es einen Weg geben, diese Aufgabe per Code zu erledigen. Und die L&ouml;sung ist eine API-Funktion namens ShellExecute.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/?p=55001394\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-01T11:15:53+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=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?p=55001394#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?p=55001394\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Dateien per VBA &ouml;ffnen\",\"datePublished\":\"2022-12-01T11:15:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?p=55001394\"},\"wordCount\":825,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"articleSection\":[\"2022\",\"5\\\/2022\",\"6\\\/2022\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/?p=55001394#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?p=55001394\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?p=55001394\",\"name\":\"Dateien per VBA &ouml;ffnen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"datePublished\":\"2022-12-01T11:15:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?p=55001394#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/?p=55001394\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?p=55001394#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dateien per VBA &ouml;ffnen\"}]},{\"@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":"Dateien per VBA &ouml;ffnen - 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\/?p=55001394","og_locale":"de_DE","og_type":"article","og_title":"Dateien per VBA &ouml;ffnen","og_description":"Es gibt viele Gelegenheiten, zu denen man gern eine Datei per VBA &ouml;ffnen m&ouml;chte. Ein gutes Beispiel ist ein soeben auf Basis eines Berichts erstelltes PDF-Dokument. Doch der Standardumfang von VBA liefert keine M&ouml;glichkeit, diese Aufgabe zu erledigen. Und tats&auml;chlich ist das Anzeigen einer Datei nicht trivial, zumindest dann nicht, wenn wir vorher noch nicht wissen, welchen Dateityp die Datei hat und mit welcher Anwendung diese ge&ouml;ffnet werden soll. Allerdings wei&szlig; Windows ja auch meistens, mit welcher Anwendung eine Datei ge&ouml;ffnet werden soll, wenn wir diese im Windows Explorer doppelt anklicken. Also muss es einen Weg geben, diese Aufgabe per Code zu erledigen. Und die L&ouml;sung ist eine API-Funktion namens ShellExecute.","og_url":"https:\/\/access-im-unternehmen.de\/?p=55001394","og_site_name":"Access im Unternehmen","article_published_time":"2022-12-01T11:15:53+00:00","author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/?p=55001394#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/?p=55001394"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Dateien per VBA &ouml;ffnen","datePublished":"2022-12-01T11:15:53+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/?p=55001394"},"wordCount":825,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"articleSection":["2022","5\/2022","6\/2022","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/?p=55001394#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/?p=55001394","url":"https:\/\/access-im-unternehmen.de\/?p=55001394","name":"Dateien per VBA &ouml;ffnen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"datePublished":"2022-12-01T11:15:53+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/?p=55001394#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/?p=55001394"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/?p=55001394#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Dateien per VBA &ouml;ffnen"}]},{"@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\/55001394","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=55001394"}],"version-history":[{"count":1,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001394\/revisions"}],"predecessor-version":[{"id":88073156,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001394\/revisions\/88073156"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}