{"id":55000282,"date":"2015-08-01T00:00:00","date_gmt":"2020-01-24T15:59:22","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=282"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Nuetzliche_Helferlein_per_VBScript","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html","title":{"rendered":"N&uuml;tzliche Helferlein per VBScript"},"content":{"rendered":"<p class='introduction'>Das Entwickeln von Access-Anwendungen ist das eine, der Umgang mit der Peripherie derselben das andere. So will Ihre Anwendung erst verteilt werden, oder Sie ben&ouml;tigen Systemaktionen, die  sich unter Access nicht so ohne weiteres ausf&uuml;hren lassen. Dann k&ouml;nnten Ihnen m&ouml;glicherweise extern gestartete Skripte weiterhelfen. Solche Skripte schauen wir uns in diesem Beitrag an.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1504_ScriptingDemo.zip<\/b> und den enthaltenen Dateien.<\/p>\n<h2>Script-Sprachen<\/h2>\n<p>Wenn Sie sich nach M&ouml;glichkeiten umsehen, um abseits von Access- und VBA-Programmierung unter Windows Makros auszuf&uuml;hren, so bieten sich etwa <b>Batch-Dateien<\/b> mit der Endung <b>bat<\/b> oder <b>cmd<\/b> an, die Kommandozeilenaktionen starten. Viel Freude werden Sie dabei wahrscheinlich nicht haben, da der Sprachumfang reichlich beschr&auml;nkt ist und zudem die Kenntnis zahlreicher Kommandozeilenparameter erfordert. Erheblich ausgefeilter kommt da die <b>Windows-Powershell<\/b> daher, &uuml;ber die sich fast alles realisieren l&auml;sst. Sie verlangt Ihnen jedoch noch mehr Einarbeitung ab, die zudem wegen des objektorientierten Ansatzes nicht gerade leicht f&auml;llt. <\/p>\n<p>So bleibt als leistungsf&auml;higer Ausweg das standardm&auml;&szlig;ig unter Windows installierte <b>Visual Basic Scripting<\/b>, kurz <b>VBScript<\/b>. Das Gute an der Sache: Wenn Sie sich halbwegs mit VBA-Programmierung auskennen, so wird ihnen das Erstellen von VBScripten leicht von der Hand gehen, denn Syntax und Sprachumfang sind nahezu identisch. Auf einige Unterschiede gehen wir noch ein.<\/p>\n<h2>VBScripte<\/h2>\n<p>VBScript-Dateien sind einfache Textdateien mit der Endung <b>vbs<\/b>, die VBA-Code enthalten und von der <b>Windows-Scripting-Engine<\/b> ausgef&uuml;hrt werden. Diese Dateiendung ist automatisch mit einem der beiden Script-Prozessoren <b>wscript.exe<\/b> oder <b>cscript.exe<\/b> verkn&uuml;pft.<\/p>\n<p>Doppelklicken Sie also auf eine <b>vbs<\/b>-Datei, so startet in der Regel die <b>wscript.exe<\/b>, welche die Anweisungen dann abarbeitet. Dabei nimmt sich die Engine den Code zun&auml;chst genau unter die Lupe und testet ihn auf Syntaxfehler. Im Fehlerfall wird eine entsprechende Meldung ge&ouml;ffnet. Danach kompiliert sie ihn und startet die Prozedur. Aber auch dann, wenn die Syntax stimmt, kann es zu Fehlern etwa infolge falscher Parameter oder inkorrekter Objektansprache kommen. Dann ereignet sich ebenfalls eine Fehlermeldung und das Script wird an dieser Stelle abgebrochen.<\/p>\n<p>An dieser Stelle ein Hinweis: VBScript ist an sich noch kein Sicherheitsrisiko, arbeitet jedoch nicht in abgeschotteter Umgebung. Zwar k&ouml;nnen Windows-API-Funktionen nicht aufgerufen &#8211; hier ein Unterschied zu VBA -, daf&uuml;r aber beliebige ActiveX-Komponenten erzeugt werden, die ihrerseits allerlei Unbill hervorzubringen imstande w&auml;ren. Aus diesem Grund werden die Script-Engines von Administratoren zuweilen gesperrt und die Ausf&uuml;hrung von <b>vbs<\/b>-Dateien verhindert. Inzwischen kommt das immer seltener vor, denn &uuml;ber VBA-Programmierung, die ja Bestandteil von beliebigen Access-, Word- oder Excel-Dateien sein kann, sind noch viel mehr unheilvolle Aktionen m&ouml;glich. Und diese Dateien werden ja auch nicht gesperrt.<\/p>\n<h2>VBScripte erzeugen<\/h2>\n<p>Nicht einfacher, als das! Legen Sie eine neue Textdatei an und speichern sie unter der Endung <b>vbs <\/b>ab. Schreiben Sie nur diese eine Zeile in sie:<\/p>\n<pre>Msgbox \"Hallo! Bin ein VBScript!\"<\/pre>\n<p>Doppelklicken Sie auf die dergestalt modifizierte Datei, und schon werden Sie mit dem Meldungsfenster begl&uuml;ckt, wenn Scripting nicht auf Ihrem System deaktiviert ist.<\/p>\n<p>Die Tatsache, dass es sich nur um Textdateien handelt, er&ouml;ffnet die M&ouml;glichkeit, Scripte auch aus Access heraus zu erstellen. Dazu wird der Code in eine String-Variable geschrieben und diese in das Dateisystem abgespeichert, wie etwa in der Prozedur in Listing 1. Der Variablen <b>sScript<\/b> wird die Codezeile von oben zugewiesen und &uuml;ber die <b>Open<\/b>-Anweisung eine Datei mit dem Namen <b>test.vbs<\/b> angelegt, wobei als Pfad das Verzeichnis der Datenbank (<b>CurrentProject.Path<\/b>) verwendet wird. Anschlie&szlig;end wird die <b>vbs<\/b>-Datei &uuml;ber die Script-Engine (<b>wscript.exe)<\/b> und die <b>Shell<\/b>-Anweisung aufgerufen.<\/p>\n<pre><span style=\"color:blue;\">Sub <\/span>CreateVBScript()\r\n     <span style=\"color:blue;\">Dim <\/span>sScript<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>sVBSFile as string\r\n     sVBSFile = CurrentProject.Path & \"\\test.vbs\"\r\n     sScript = \"Msgbox \"\"Ich bin ein VBScript!\"\"\"\r\n     Open sVBSFile For Binary<span style=\"color:blue;\"> As <\/span>#1\r\n     Put #1, , sScript\r\n     Close #1\r\n     DoEvents\r\n     Shell \"wscript.exe \" & sVBSFile\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p class='imagetext'>Listing 1: Aus VBA heraus erzeugte VBS-Datei<\/p>\n<p>Rufen Sie einfach die Prozedur <b>CreateVBScript<\/b> aus dem VBA-Direktfenster heraus auf und &uuml;berzeugen Sie sich vom Erfolg der Routine.<\/p>\n<h2>Anwendungsf&auml;lle<\/h2>\n<p>Warum sollte man aus Access heraus ein <b>VBScript<\/b> aufrufen Schlie&szlig;lich l&auml;sst sich ja &uuml;ber VBA dasselbe erreichen, wie &uuml;ber ein externes Skript. Das stimmt jedoch nicht immer. Manche Aufgaben k&ouml;nnen nur &uuml;ber administrative Rechte erledigt werden &#8211; etwa das Setzen von bestimmten <b>Registry<\/b>-Schl&uuml;sseln. Und da Access nun Mal nur unter normalen Benutzerrechten ausgef&uuml;hrt wird, kann derlei nicht vollzogen werden. Von der L&ouml;sung, Access dennoch als Administrator auszuf&uuml;hren, sollten Sie besser die Finger lassen, weil dann die Add-Ins von Access und VBA durcheinander geraten k&ouml;nnen.<\/p>\n<p>Hier hilft ein <b>VBScript<\/b> aus, das Aufgaben unter erh&ouml;hten Benutzerrechten ausf&uuml;hrt. Den daf&uuml;r ben&ouml;tigten Code schauen wir uns sp&auml;ter an.<\/p>\n<p>Oft gebraucht wird ein Skript, das Ihre Datenbank &uuml;berhaupt erst installiert. Nehmen wir an, Sie h&auml;tten alle Teile Ihrer Anwendung in einer Zip-Datei untergebracht. Da w&auml;re es sch&ouml;n, wenn ein Script auf einem Zielrechner etwa folgende Aufgaben erledigen w&uuml;rde:<\/p>\n<p>Entpacken des Archivs; Anlegen von Zielverzeichnissen; Kopieren von Dateien in die Zielverzeichnisse; Setzen des Vertrauensw&uuml;rdigen Orts f&uuml;r die Datenbank; Anlegen einer Verkn&uuml;pfung auf dem Desktop; und eventuell noch das Registrieren ben&ouml;tigter ActiveX-Komponenten. Auch hierf&uuml;r gibt es ein umfangreiches Beispiel-Skript, welches auf den folgenden Seiten erl&auml;utert wird.<\/p>\n<h2>VBScript vs. VBA<\/h2>\n<p>Unter <b>VBScript<\/b> brauchen Sie, wie wir weiter oben bereits gesehen haben, keine Prozedur zu deklarieren. Das Script selbst stellt schon eine Prozedur dar. Sie k&ouml;nnen gleich zu Beginn im Code mit der ersten Anweisung beginnen. Es ist Ihnen jedoch unbenommen, trotzdem Prozeduren auf die gleiche Weise anzulegen, wie unter VBA. Solche <b>Sub<\/b>&#8211; oder <b>Function<\/b>-Prozeduren sind dann sinnvoll, wenn sie als Unterroutinen im Code &ouml;fters aufgerufen werden.<\/p>\n<p>Variablen m&uuml;ssen unter <b>VBScript<\/b> nicht deklariert werden. Dies kommt dem Verhalten von VBA gleich, wenn kein <b>Option Explici<\/b>t im Modulkopf steht. <b>VBScript<\/b>-Variablen sind immer vom Typ <b>Variant<\/b>, was aber nicht bedeutet, dass ihr Sub-Typ nicht von Belang w&auml;re. Funktionen etwa, die einen String als Parameter erwarten, kann kein Long-Wert &uuml;bergeben werden. So eine Konversion nimmt VBS nicht automatisch vor.<\/p>\n<p>Wenn Sie es gewohnt sind, unter VBA in For..Next-Schleifen die Z&auml;hlervariable namentlich einzusetzen, so m&uuml;ssen Sie unter VBScript davon Abstand nehmen.<\/p>\n<pre>For i = 0 To 10\r\n...\r\n<span style=\"color:blue;\">Next<\/span> i<\/pre>\n<p>f&uuml;hrt zu einem VBScript-Syntaxfehler. Korrekt w&auml;re<\/p>\n<pre>For i = 0 To 10\r\n...\r\n<span style=\"color:blue;\">Next<\/span><\/pre>\n<p>Dar&uuml;ber hinaus unterst&uuml;tzt <b>VBScript<\/b> nicht die Deklaration von <b>API<\/b>-Funktionen. Windows- oder andere DLLs k&ouml;nnen damit nicht angesprochen werden.<\/p>\n<p>Au&szlig;erdem fehlt ausgerechnet eine ganze Reihe von Datei-Anweisungen, wie <b>Dir<\/b>, <b>FileCopy<\/b>, <b>FileLen<\/b> oder <b>FileDateTime<\/b>. Auch der Befehl <b>Shell<\/b> zum Ausf&uuml;hren anderer Anwendungen existiert nicht. Solche Operationen m&uuml;ssen durch COM-Objekte ersetzt werden, die sich per <b>CreateObject<\/b> erzeugen lassen. Die am h&auml;ufigsten verwendeten Objekte sind das <b>FileSystemObject<\/b>, das <b>Shell<\/b>-Objekt aus <b>shell32<\/b> und andere speziell f&uuml;r <b>VBScript<\/b> entwickelte Komponenten, wie der <b>Windows Scripting Host<\/b> (<b>wshom.ocx<\/b>). All diesen Objekten begegnen Sie noch bei der Besprechung des Installations-Skripts.<\/p>\n<p>Zusammenfassend kann man feststellen, dass sich VBA-Code zu gro&szlig;en Teilen direkt in ein <b>VBScript<\/b> &uuml;bernehmen l&auml;sst. Entwickeln und debuggen Sie ihren Code unter VBA und &auml;ndern Sie ihn nach &uuml;bernahme in ein <b>VBScript<\/b> &uuml;berall da, wo es notwendig ist.<\/p>\n<h2>VBScripte debuggen<\/h2>\n<p>Leider ist der Komfort, wie Sie ihn von VBA her kennen, beim Debuggen von VBScripten nicht vorhanden.  Der Debugger zeigt lediglich eine Meldung an, wenn sich ein Fehler ereignet. Bild 1 ist ein Beispiel  f&uuml;r einen Syntaxfehler, Bild 2 eines f&uuml;r einen Fehler bei der Ansprache eines Objekts. Der Debugger zeigt immerhin die Code-Zeile und die Spalte an, in der sich der Fehler zutrug. Was genau dort schiefging, bleibt aber weitgehend verborgen. Eine Inspektion von Variablen oder Haltepunkte bleibt au&szlig;en vor. Meist streut man dann diverse Message-Boxen in den Code ein, die die Werte von Variablen anzeigen, um dem Fehler auf die Schliche zu kommen. Wer viel mit <b>vbs<\/b>-Dateien hantiert kann als <b>Power User<\/b> zu <b>Visual Studio <\/b>greifen, oder zu einem Tool, wie dem kostenpflichtigen <b>VBSEdit<\/b> (http:\/\/www.vbsedit.com). Eine freie Alternative stellt der freie <b>Admin Script Editor<\/b> (http:\/\/www.itninja.com\/community\/admin-script-editor ) dar. Diese k&ouml;nnen alle den Script-Code auf &auml;hnliche Weise debuggen, wie VBA.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/Error_Syntax.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/Error_Syntax.png\" alt=\"Fehlermeldung der Script-Engine bei einem Syntaxfehler\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Fehlermeldung der Script-Engine bei einem Syntaxfehler<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/Error_Object.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/Error_Object.png\" alt=\"Fehlermeldung der Script-Engine bei einem Objektfehler\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Fehlermeldung der Script-Engine bei einem Objektfehler<\/p>\n<h2>Hilfsbibliotheken f&uuml;r VBScript<\/h2>\n<p>Wo Funktionen f&uuml;r bestimmte Aufgaben im Sprachumfang von <b>VBScript<\/b> fehlen, greift man zu zus&auml;tzlichen Bibliotheken. Unter VBA tun Sie ja &auml;hnliches, indem Sie zus&auml;tzliche <b>Verweise<\/b> in das VBA-Projekt einklinken. <b>VBScript<\/b> allerdings sieht das so nicht vor, kann aber fast alle Objekte erzeugen, die in der Registry unter dem Zweig <b>HKEY_CLASSES_ROOT<\/b> zu finden sind. Also jene, die eine <b>ProgId<\/b> aufweisen und durch einen mit Punkt getrennten Begriff gekennzeichnet sind, wie zum Beispiel <b>Access.Application<\/b>.<\/p>\n<p>Die wichtigsten Aufgaben lassen sich mit zwei Bibliotheken erledigen, der <b>Shell32<\/b>-Bibliothek und dem <b>Windows Scripting Host<\/b>. Um sich &uuml;ber deren Inhalt zu informieren, laden Sie unter VBA Verweise auf die Bibliotheken <b>Microsoft Shell Controls And Automation <\/b>(<b>Shell32<\/b>) und <b>Windows Script Host Object Model<\/b> (<b>IWshRuntimeLibrary<\/b>) und inspizieren sie im VBA-Objektkatalog. Die Syntax f&uuml;r das Anlegen der wichtigsten Objekte unter VBA und <b>VBScript<\/b> finden Sie hier im Vergleich:<\/p>\n<pre>VBA:\r\n<span style=\"color:blue;\">Set<\/span> oShell = <span style=\"color:blue;\">New<\/span> Shell32.Shell\r\n<span style=\"color:blue;\">Set<\/span> oShell2 = <span style=\"color:blue;\">New<\/span> WshShell\r\n<span style=\"color:blue;\">Set<\/span> fso = <span style=\"color:blue;\">New<\/span> FileSystemObject\r\nVBScript:\r\n<span style=\"color:blue;\">Set<\/span> oShell = CreateObject _\r\n   (\"Shell.Application)\r\n<span style=\"color:blue;\">Set<\/span> oShell2 = CreateObject _\r\n   (\"WScript.Shell\")\r\n<span style=\"color:blue;\">Set<\/span> fso = CreateObject _\r\n  (\"Scripting.FileSystemObject\")<\/pre>\n<p>&uuml;ber die so instanzierten Objekte lassen sich alle Aufgaben durchf&uuml;hren, die auch VBA erm&ouml;glicht. Das w&auml;ren vor allem die Datei- und Verzeichnisoperationen &uuml;ber das FileSystemObject und das WshShell-Objekt. Aber auch die Registry l&auml;sst sich lesend und schreibend mit sehr einfachen Einzeilern ansprechen.<\/p>\n<p>&ouml;ffnen Sie die Beispieldatenbank, in der die erw&auml;hnten Verweise bereits gesetzt sind. Im Modul <b>mdlScripting<\/b> finden Sie verschiedene Prozeduren, die die Ansprache der Objekte verdeutlichen.<\/p>\n<h2>Script als Administrator starten<\/h2>\n<p>Kommen wir nach den theoretischen Ausf&uuml;hrungen zu einem praktischen Beispiel. F&uuml;r viele Dateioperationen ist es notwendig, dass das ablaufende Skript Administratorrechte besitzt. Sei es, um Dateien in gesch&uuml;tzte Verzeichnisse zu kopieren oder darin zu l&ouml;schen, oder, um Rechte auf Ordner zu setzen. Doppelklicken Sie jedoch auf eine <b>vbs<\/b>-Datei, so wird das Skript unter normalem Benutzerkontext gestartet. Im Prinzip m&uuml;ssten Sie die <b>wscript.exe<\/b> <b>Als Administrator ausf&uuml;hren<\/b> und ihr als Argument den Pfad der <b>vbs<\/b>-Datei mitteilen. Das ist etwas umst&auml;ndlich. Mit einem Trick l&auml;sst sich das aber auch innerhalb der <b>vbs<\/b>-Datei selbst bewerkstelligen. Nehmen Sie den Code des Beispielskripts <b>setpermission.vbs<\/b> in Listing 2.<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> oShell = CreateObject(\"Shell.Application\")\r\n<span style=\"color:blue;\">If <\/span>(WScript.Arguments.Count = 1)<span style=\"color:blue;\"> Then<\/span> ElevateUAC\r\n<span style=\"color:blue;\">Sub <\/span>ElevateUAC\r\n      sCommand = WScript.Arguments(0)\r\n     'oShell.ShellExecute \"c:\\windows\\syswow64\\wscript.exe\", _\r\n&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;&nbsp;&nbsp;WScript.ScriptFullName & \" | \" & sCommand, , \"runas\", 1\r\n&nbsp;&nbsp;&nbsp;&nbsp;'-> unter Winx64\r\n&nbsp;&nbsp;&nbsp;&nbsp;oShell.ShellExecute \"c:\\windows\\system32\\wscript.exe\", _\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WScript.ScriptFullName & \" | \" & sCommand, , \"runas\", 1\r\n&nbsp;&nbsp;&nbsp;&nbsp;WScript.Quit\r\n<span style=\"color:blue;\">End Sub<\/span>\r\nsFolder = WScript.Arguments(1)\r\nMsgbox \"Berechtigungen werden gesetzt auf \" & sFolder\r\noShell.ShellExecute \"Icacls.exe \", sFolder & \" \/grant Jeder:F \/T\", , \"open\", 1<\/pre>\n<p class='imagetext'>Listing 2: Das Skript startet als Adminstrator und setzt dann Berechtigungen<\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000282\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000282?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000282\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"22c77db969\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Entwickeln von Access-Anwendungen ist das eine, der Umgang mit der Peripherie derselben das andere. So will Ihre Anwendung erst verteilt werden, oder Sie ben&ouml;tigen Systemaktionen, die  sich unter Access nicht so ohne weiteres ausf&uuml;hren lassen. Dann k&ouml;nnten Ihnen m&ouml;glicherweise extern gestartete Skripte weiterhelfen. Solche Skripte schauen wir uns in diesem Beitrag an.<\/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":[662015,66042015,44000011],"tags":[],"class_list":["post-55000282","post","type-post","status-publish","format-standard","hentry","category-662015","category-66042015","category-VBAGrundlagen"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>N&uuml;tzliche Helferlein per VBScript - Access [basics]<\/title>\n<meta name=\"description\" content=\"Das Entwickeln von Access-Anwendungen ist das eine, der Umgang mit der Peripherie derselben das andere. So will Ihre Anwendung erst verteilt werden, oder Sie ben\u00f6tigen Systemaktionen, die sich unter Access nicht so ohne weiteres ausf\u00fchren lassen. Dann k\u00f6nnten Ihnen m\u00f6glicherweise extern gestartete Skripte weiterhelfen. Solche Skripte schauen wir uns in diesem Beitrag an.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"N&uuml;tzliche Helferlein per VBScript - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Das Entwickeln von Access-Anwendungen ist das eine, der Umgang mit der Peripherie derselben das andere. So will Ihre Anwendung erst verteilt werden, oder Sie ben\u00f6tigen Systemaktionen, die sich unter Access nicht so ohne weiteres ausf\u00fchren lassen. Dann k\u00f6nnten Ihnen m\u00f6glicherweise extern gestartete Skripte weiterhelfen. Solche Skripte schauen wir uns in diesem Beitrag an.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/Error_Syntax.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"25\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/Error_Syntax.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html\",\"name\":\"N&uuml;tzliche Helferlein per VBScript - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:22+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Das Entwickeln von Access-Anwendungen ist das eine, der Umgang mit der Peripherie derselben das andere. So will Ihre Anwendung erst verteilt werden, oder Sie ben\\u00f6tigen Systemaktionen, die sich unter Access nicht so ohne weiteres ausf\\u00fchren lassen. Dann k\\u00f6nnten Ihnen m\\u00f6glicherweise extern gestartete Skripte weiterhelfen. Solche Skripte schauen wir uns in diesem Beitrag an.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Nuetzliche_Helferlein_per_VBScript.html\",\"name\":\"N&uuml;tzliche Helferlein per VBScript\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000282"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000282\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}