{"id":55000274,"date":"2015-04-01T00:00:00","date_gmt":"2020-01-24T15:59:20","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=274"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Zippen_mit_Bordmitteln","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Zippen_mit_Bordmitteln.html","title":{"rendered":"Zippen mit Bordmitteln"},"content":{"rendered":"<p class='introduction'>Das VBA-gesteuerte Packen und Archivieren von Dateien ist eine Aufgabe, der auch Access-Entwickler immer wieder begegnen. Dass man dabei keineswegs auf externe Komponenten oder Hilfsmittel angewiesen ist und mit Windows-Bordmittel auskommen kann, soll dieser Beitrag zeigen.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1502_Zippen.mdb<\/b>.<\/p>\n<h2>Zip-Format<\/h2>\n<p>Es gibt zweifellos Alternativen zum altehrw&uuml;rdigen Zip-Format, denn <b>RAR<\/b> oder <b>7z <\/b>etwa bieten erheblich bessere Kompressionsraten an. Doch diese Formate setzen voraus, dass auf dem System ein entsprechendes Archivierungsprogramm installiert ist, und bei Weitergabe einer solchen Archivdatei k&ouml;nnen Sie nicht einfach davon ausgehen, dass dies beim Adressaten der Fall ist. Mit dem Zip-Format sind Sie auf der sicheren Seite: Windows hat seit einigen Generationen einen entsprechenden Support eingebaut. &uuml;ber den Explorer lassen sich Zip-Dateien wie Ordner behandeln, einsehen und bearbeiten. Und was sich manuell erledigen l&auml;sst, sollte sich &uuml;ber irgendeinen Weg auch programmtechnisch realisieren lassen.<\/p>\n<h2>Shell-Funktionen<\/h2>\n<p>Die &uuml;bliche Herangehensweise, wenn Funktionen von Windows gefragt sind, ist die Suche im API-Katalog. In unserem Fall kann darauf verzichtet werden, da Windows mit der <b>Shell<\/b>-Bibliothek eine COM-Schnittstelle zur Verf&uuml;gung stellt, die alles N&ouml;tige mitbringt. Es handelt sich um die <b>shell32.dll<\/b> im Systemverzeichnis, welche sich in der Liste der Verweise von VBA namentlich als <b>Microsoft Shell Controls And Automation<\/b> ausgibt. Nachdem Sie die Bibliothek ihrem Projekt &uuml;ber den Verweisedialog hinzugef&uuml;gt haben, finden Sie deren Klassen im Objektkatalog, wenn Sie links oben den Eintrag <b>Shell32<\/b> ausw&auml;hlen (Bild 1). An den Klassenbezeichnungen, wie <b>Folder<\/b>, <b>FolderItem<\/b> und <b>ShellFolderView<\/b>, l&auml;sst sich bereits ablesen, dass es hier zuv&ouml;rderst um Verzeichnisse und deren Inhalte geht. Da die Shell, wie erw&auml;hnt, eine Zip-Datei als Verzeichnis ansieht, w&auml;re nun zu erl&auml;utern, wie man so ein Verzeichnis anspricht.  Dazu gehen Sie vom Hauptobjekt der Bibliothek aus, der <b>Shell<\/b>-Klasse, welche in der Abbildung bereits markiert ist.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/Objektkatalog_Shell.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/Objektkatalog_Shell.png\" alt=\"Die Shell32-Bibliothek, im VBA-Objektkatalog dargestellt\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Die Shell32-Bibliothek, im VBA-Objektkatalog dargestellt<\/p>\n<p>Eine Instanz dieser Klasse erhalten Sie einfach &uuml;ber die <b>New<\/b>-Zuweisung an eine Objektvariable:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>objShell<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> Shell32.Shell<\/pre>\n<p>Hier sollte nicht unerw&auml;hnt bleiben, dass die ganze Angelegenheit auch komplett ohne einen Bibliotheksverweis ausk&auml;me. Folgender Ausdruck erzeugt n&auml;mlich ebenfalls das Shell-Objekt:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>objShell<span style=\"color:blue;\"> As Object<\/span>\r\n<span style=\"color:blue;\">Set<\/span> objShell = _\r\n    CreateObject(\"Shell.Application\")<\/pre>\n<p>Haben Sie nun das Hauptobjekt, so k&ouml;nnen Sie sogleich allerlei Methoden desselben ansprechen. So &ouml;ffnet etwa die Methode <b>objShell.FileRun<\/b> den <b>Ausf&uuml;hren<\/b>-Dialog von Windows, oder <b>TrayProperties<\/b> den Dialog zu Einstellungen der Taskleiste. Warum Microsoft ausgerechnet solche Funktionen in die COM-Schnittstelle verbaute, ist nicht recht nachvollziehbar, da man sie programmgesteuert wohl h&ouml;chst selten aufrufen wird. Sie interessieren uns auch nicht weiter. Lediglich die Funktion <b>NameSpace<\/b> ist f&uuml;r unsere Belange wichtig: sie allein gibt ein <b>Folder<\/b>-Objekt, also ein Verzeichnis, zur&uuml;ck. Dazu &uuml;bergibt man ihr als Parameter den Verzeichnisnamen:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>objFolder<span style=\"color:blue;\"> As <\/span>Shell32.Folder\r\n<span style=\"color:blue;\">Set<\/span> objFolder = objShell.NameSpace ( _\r\n    \"c:\\windows\")<\/pre>\n<p>Auf den Methodennamen <b>NameSpace<\/b> w&uuml;rde man wahrscheinlich nicht kommen und eher so etwas wie <b>GetFolder<\/b> erwarten. Grund f&uuml;r die Bezeichnung ist, dass sie eben nicht nur physische Verzeichnisse ermittelt, sondern auch virtuelle, wie dies beim Zip-Archiv vorliegt. Statt des Verzeichnispfads nimmt sie etwa auch Zahlen entgegen. Versuchen Sie dies:<\/p>\n<pre> objShell.NameSpace(0).Title<\/pre>\n<p>Ergebnis w&auml;re der String <b>Desktop<\/b>. (<b>Title<\/b> ist die Methode zum Auslesen der Bezeichnung eines Folder-Objekts.) Der komplette Pfadname ist etwas umst&auml;ndlicher zu ermitteln:<\/p>\n<pre> objShell.NameSpace(0).Self.Path<\/pre>\n<p>Das ergibt etwa <b>C:\\Users\\Andr&eacute;\\Desktop<\/b>. Sie k&ouml;nnen nun mit den Zahlenparametern experimentieren. &uuml;bergeben Sie die 3, so erhalten Sie als Bezeichnung <b>Systemsteuerung<\/b>. Tats&auml;chlich l&auml;sst sich die Systemsteuerung ja im Explorer-Baum an-zeigen. Was aber ist deren Pfad Sie erhalten den Ausdruck<\/p>\n<pre>::{21EC2020-3AEA-1069-A2DD-08002B30309D}<\/pre>\n<p>Diese <b>GUID<\/b> symbolisiert einen virtuellen Ordner. Machen Sie die Probe aufs Exempel und setzen diese GUID als String f&uuml;r den Pfadnamen ein:<\/p>\n<p> objShell.NameSpace(&#8222;::{21EC2020-3AEA-1069-A2DD-08002B30309D}&#8220;).Title<\/p>\n<p>Auch das geht und liefert uns abermals die Bezeichnung <b>Systemsteuerung<\/b>. <\/p>\n<p>Zusammengefasst also nimmt <b>NameSpace<\/b> als Parameter sowohl Verzeichnis-Strings entgegen, wie auch Zahlenwerte (die sogenannten <b>KnownFolder-ID<\/b>s) und schlie&szlig;lich GUIDs (<b>KnownFolder-CLSID<\/b>s) als Strings.<\/p>\n<p>Wenden wir uns nach diesem Ausflug in den Shell-Namespace wieder den Zip-Archiven zu. Sie k&ouml;nnen sicher erraten, wie eine Zip-Datei als <b>Folder<\/b>-Objekt zu erhalten ist: Sie &uuml;bergeben einfach deren Dateinamen. Ein Beispiel:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> objFolder = objShell.NameSpace ( _\r\n    \"d:\\beispiele\\test.zip\")<\/pre>\n<p>Als n&auml;chstes interessiert uns nat&uuml;rlich der Inhalt eines Ordners &#8211; in diesem Fall die enthaltenen Dateien. Die <b>Folder<\/b>-Klasse sieht daf&uuml;r die Auflistungs-Eigenschaft <b>Items<\/b> vor, welche sich &uuml;ber eine <b>For-Next<\/b>-Schleife durchlaufen l&auml;sst. Jedes Element der <b>Items<\/b>-Auflistung ist vom Typ <b>FolderItem<\/b>. M&ouml;chten Sie die Namen der Dateien im Ordner ausgeben, so k&auml;me etwa diese Routine infrage:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>objItm<span style=\"color:blue;\"> As <\/span>FolderItem\r\nFor Each objItm in objFolder.Items\r\n     <span style=\"color:blue;\">Debug.Print<\/span> objItm.Name\r\n<span style=\"color:blue;\">Next<\/span> objItm<\/pre>\n<p>Auf diese Weise k&ouml;nnen Sie die in einem Zip-Archiv befindlichen Dateien inspizieren. Dabei sollte noch erw&auml;hnt werden, dass das Archiv wiederum Ordner enthalten kann. Nur dann weist die Eigenschaft <b>IsFolder<\/b> des entsprechenden FolderItems den Wert <b>True<\/b> auf, und die Eigenschaft <b>Type<\/b> gibt einen Text aus, der genau der Bezeichnung im Explorer entspricht. Je nach System kann diese Bezeichnung allerdings unterschiedlich sein. Ist etwa ein Packprogramm installiert, so k&ouml;nnte die Bezeichnung <b>WinRAR ZIP-Archiv<\/b> lauten. <\/p>\n<h2>FolderItems extrahieren<\/h2>\n<p>Wie jedoch lassen sich die Dateien oder Ordner des Archivs nun entpacken Im Objektkatalog findet man weder zum <b>FolderItem<\/b>, noch zum <b>Folder<\/b>-Objekt Funktionsnamen, wie <b>Extract<\/b> oder <b>Uncompress<\/b>, die daf&uuml;r dienlich sein k&ouml;nnten. Das aber ist einleuchtend, da die Shell das Archiv als normalen Ordner ansieht und somit lediglich jene Methoden anbietet, die auch f&uuml;r Dateien eines Verzeichnisses g&auml;lten. Im Explorer k&ouml;nnen Sie eine Datei aus dem Archiv extrahieren, indem Sie sie entweder per Drag&#038;Drop verschieben, oder indem Sie sie kopieren und in einen anderen Ordner einf&uuml;gen. Genau das geht auch hier &uuml;ber die <b>CopyHere<\/b>-Funktion eines <b>Folder<\/b>-Objekts.  Diese Methode erwartet als Parameter ein <b>Folder<\/b>&#8211; oder <b>FolderItem<\/b>-Objekt. Der Vorgang hat folgenderma&szlig;en auszusehen:<\/p>\n<p>Sie setzen zuerst ein Folder-Objekt auf das Zielverzeichnis. Dann benutzen Sie dessen <b>CopyHere<\/b>-Methode, um in dieses Verzeichnis Dateien oder Ordner zu kopieren, wobei diese in Form von zuvor erzeugten <b>FolderItems<\/b> daher kommen m&uuml;ssen.  <\/p>\n<p>Machen wir den Test und versuchen das Archiv <b>test.zip<\/b> in einen Ordner <b>d:\\testordner<\/b> zu extrahieren:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>objZiel<span style=\"color:blue;\"> As <\/span>Folder\r\n<span style=\"color:blue;\">Set<\/span> objZiel = objShell.NameSpace( _\r\n     \"d:\\testordner\")\r\nobjZiel.CopyHere objZipFolder<\/pre>\n<p>Leider wird das Archiv damit nicht entpackt, sondern nur eine Kopie der Zip-Datei angelegt &#8211; eigentlich klar, da das Objekt <b>objZipFolder<\/b> ja das Archiv selbst kennzeichnet, nicht dessen Inhalt. Folglich muss hier  die oben angef&uuml;hrte Routine zum Auslesen der <b>FolderItems<\/b> modifiziert werden:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>objItm<span style=\"color:blue;\"> As <\/span>FolderItem\r\nFor Each objItm in objFolder.Items\r\n     objZiel.CopyHere objItm\r\n     DoEvents\r\n<span style=\"color:blue;\">Next<\/span> objItm<\/pre>\n<p>Und tats&auml;chlich: Im Zielordner laden damit die Dateien des Archivs! Sollte das Archiv Unterordner mit Dateien enthalten, so werden auch diese alle anstandslos entsprechend der Struktur angelegt. Es ist also nicht etwa n&ouml;tig, diese Unterordner und Dateien in der Routine alle einzeln anzusprechen. <\/p>\n<p>Wichtig ist auch die Zeile mit der <b>DoEvents<\/b>-Anweisung. Da der Shell-Prozess asynchron arbeitet, ist er unter Umst&auml;nden noch mit dem Kopieren eines Items besch&auml;ftigt, w&auml;hrend VBA bereits mit dem Code fortf&auml;hrt &#8211; die <b>CopyHere<\/b>-Methode wartet nicht auf den Vollzug! Es hat sich gezeigt, dass ohne ein DoEvents manchmal Dateien unterschlagen werden.<\/p>\n<p>Bei umfangreicheren Archiven werden Sie feststellen, dass sich beim Ausf&uuml;hren der Routine automatisch der Windows-Fortschrittsdialog &ouml;ffnet. Das <b>Shell<\/b>-Objekt verh&auml;lt sich also exakt gleich, wie beim manuellen Kopieren von Dateien im Explorer. In Ma&szlig;en l&auml;sst sich das Verhalten jedoch &uuml;ber einen zweiten optionalen Parameter von <b>CopyHere<\/b> steuern, den wir bisher unterschlagen haben. Mit <b>Options<\/b> kann man eine Kombination von Steuerkonstanten &uuml;bergeben, die Sie im Modul <b>mdlZipShell<\/b> der Beispieldatenbank kommentiert als Enumeration <b>eFileOp<\/b> finden. So bewirkt etwa die Angabe von <b>eOpNoProgress<\/b>, dass sich eben kein Fortschrittsdialog &ouml;ffnet. Oder <b>eOpAllowUndo<\/b> weist an, dass die Operation wieder r&uuml;ckg&auml;ngig gemacht werden kann. In unserem Fall hie&szlig;e das, dass Sie im Explorer dann das R&uuml;ckg&auml;ngig-Symbol bet&auml;tigen k&ouml;nnten, wodurch sich das Zielverzeichnis wieder leeren w&uuml;rde. Interessant ist auch die Konstante <b>eOpNewName<\/b>. Ohne deren Angabe w&uuml;rde eine existierende Datei <b>mein.txt<\/b> im Zielverzeichnis nicht &uuml;berschrieben, sondern automatisch mit einem neuen Namen kopiert; also etwa in <b>Kopie von mein.txt<\/b> oder <b>mein(1).txt<\/b>. <\/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\/55000274\/\">\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\/55000274?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\/55000274\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"8d63f6cbe9\"\/>\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 VBA-gesteuerte Packen und Archivieren von Dateien ist eine Aufgabe, der auch Access-Entwickler immer wieder begegnen. Dass man dabei keineswegs auf externe Komponenten oder Hilfsmittel angewiesen ist und mit Windows-Bordmittel auskommen kann, soll dieser Beitrag zeigen.<\/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":[66022015,662015,44000004,44000014],"tags":[],"class_list":["post-55000274","post","type-post","status-publish","format-standard","hentry","category-66022015","category-662015","category-Formulare_fuer_die_Dateneingabe","category-Loesungen"],"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>Zippen mit Bordmitteln - Access [basics]<\/title>\n<meta name=\"description\" content=\"Das VBA-gesteuerte Packen und Archivieren von Dateien ist eine Aufgabe, der auch Access-Entwickler immer wieder begegnen. Dass man dabei keineswegs auf externe Komponenten oder Hilfsmittel angewiesen ist und mit Windows-Bordmittel auskommen kann, soll dieser Beitrag zeigen.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Zippen_mit_Bordmitteln.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zippen mit Bordmitteln - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Das VBA-gesteuerte Packen und Archivieren von Dateien ist eine Aufgabe, der auch Access-Entwickler immer wieder begegnen. Dass man dabei keineswegs auf externe Komponenten oder Hilfsmittel angewiesen ist und mit Windows-Bordmittel auskommen kann, soll dieser Beitrag zeigen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Zippen_mit_Bordmitteln.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:20+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\/Objektkatalog_Shell.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=\"20\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\/Zippen_mit_Bordmitteln.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/Objektkatalog_Shell.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Zippen_mit_Bordmitteln.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Zippen_mit_Bordmitteln.html\",\"name\":\"Zippen mit Bordmitteln - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Zippen_mit_Bordmitteln.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:20+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Das VBA-gesteuerte Packen und Archivieren von Dateien ist eine Aufgabe, der auch Access-Entwickler immer wieder begegnen. Dass man dabei keineswegs auf externe Komponenten oder Hilfsmittel angewiesen ist und mit Windows-Bordmittel auskommen kann, soll dieser Beitrag zeigen.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Zippen_mit_Bordmitteln.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Zippen_mit_Bordmitteln.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Zippen_mit_Bordmitteln.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\/Zippen_mit_Bordmitteln.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Zippen_mit_Bordmitteln.html\",\"name\":\"Zippen mit Bordmitteln\"}}]},{\"@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\/55000274","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=55000274"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000274\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000274"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000274"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000274"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}