{"id":55001067,"date":"2016-12-01T00:00:00","date_gmt":"2020-05-22T13:35:19","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1067"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"ZipFormular","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/ZipFormular\/","title":{"rendered":"Zip-Formular"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg09.met.vgwort.de\/na\/5da337a12b304c3daeb7f5107d9587a1\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Wie das Zippen unter Access mit Bordmitteln funktioniert, haben Sie im Artikel &#8222;Zippen mit Access&#8220; erfahren. Im vorliegenden Beitrag schauen wir uns nun an, wie Sie die VBA-Funktionen zum Packen, Entpacken und L&ouml;schen von Elementen aus Zip-Dateien von einem Formular aus nutzen k&ouml;nnen, sodass auch reine Benutzer einer Anwendung damit arbeiten k&ouml;nnen.<\/b><\/p>\n<h2>Formular zum Verwalten einfacher Zip-Funktionen<\/h2>\n<p>Im Beitrag <b>Zippen mit Access <\/b>(<b>www.access-im-unternehmen.de\/1064<\/b>) haben wir einige Funktionen vorgestellt, mit denen Sie mit Zip-Dateien arbeiten k&ouml;nnen. Damit lassen sich neue Zip-Dateien erstellen, Dateien hinzuf&uuml;gen, Dateien aus Zip-Dateien extrahieren und die enthaltenen Dateien auflisten.<\/p>\n<p>Schlie&szlig;lich k&ouml;nnen Sie die enthaltenen Dateien auch aus dem Zip-Archiv l&ouml;schen. Das Formular soll wie in Bild 1 aussehen. Das Formular bietet ein Textfeld, das den Namen der aktuellen Zip-Datei anzeigt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_06\/pic_1067_001.png\" alt=\"Aussehen des fertigen Zip-Formulars\" width=\"649,559\" height=\"285,8809\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Aussehen des fertigen Zip-Formulars<\/span><\/b><\/p>\n<p>Mit der Schaltfl&auml;che mit den drei Punkten (&#8230;) k&ouml;nnen Sie einen <b>Datei &ouml;ffnen<\/b>-Dialog anzeigen, mit dem Sie die zu &ouml;ffnende Zip-Datei ausw&auml;hlen k&ouml;nnen. Alternativ klicken Sie auf die <b>Neu<\/b>-Schaltfl&auml;che, die einen Dialog zum Angeben des Namens f&uuml;r eine neue Zip-Datei &ouml;ffnet.<\/p>\n<p>Nach dem &ouml;ffnen einer bestehenden Zip-Datei soll das Formular die enthaltenen Dateien im Listenfeld im unteren Bereich anzeigen. Das Listenfeld soll die Auswahl eines oder mehrerer Elemente erm&ouml;glichen, die dann wahlweise in einen noch zu spezifizierenden Ordner entpackt (Schaltfl&auml;che <b>-><\/b>) oder aus dem Archiv entfernt werden (Schaltfl&auml;che <b>&#8211;<\/b>).<\/p>\n<p>Die Plus-Schaltfl&auml;che (<b>+<\/b>) erlaubt es schlie&szlig;lich, einen weiteren Dateiauswahl-Dialog anzuzeigen, mit dem Sie die zur Zip-Datei hinzuzuf&uuml;genden Dateien ausw&auml;hlen k&ouml;nnen. Diese werden dann nach dem Hinzuf&uuml;gen direkt im Listenfeld angezeigt. Nun beginnen wir mit dem Bau dieses Formulars.<\/p>\n<h2>Tabellen der Anwendung<\/h2>\n<p>Die Anwendung verwendet nur eine einzige Tabelle namens <b>tblDateien<\/b>, die wie in Bild 2 aussieht. Wie diese gef&uuml;llt wird, erfahren Sie im Beitrag <b>Zippen mit Access <\/b>(<b>www.access-im-unternehmen.de\/1064<\/b>). Gegen&uuml;ber der dort verwendeten Tabelle haben wir noch zwei Felder hinzugef&uuml;gt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_06\/pic_1067_003.png\" alt=\"Tabelle zum Speichern der Dateiinformationen der Dateien aus dem Zip-Archiv\" width=\"649,559\" height=\"267,2826\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Tabelle zum Speichern der Dateiinformationen der Dateien aus dem Zip-Archiv<\/span><\/b><\/p>\n<p>Diese hei&szlig;en <b>GepackteGroesseText <\/b>und <b>Ungepackte-GroesseText <\/b>und nehmen nicht den per Code ermittelten Zahlenwert f&uuml;r die Dateigr&ouml;&szlig;e auf, sondern den kompletten gelieferten Wert inklusive der Einheit, also etwa <b>Bytes <\/b>oder <b>KB<\/b>.<\/p>\n<h2>Entwurfsansicht<\/h2>\n<p>In der Entwurfsansicht sieht das Formular wie in Bild 3 aus. Da das Formular keine Datenherkunft besitzt und somit auch nicht zum Bl&auml;ttern durch Datens&auml;tze verwendet wird, stellen wir die Eigenschaften <b>Navigationsschaltfl&auml;chen<\/b>, <b>Datensatzmarkierer<\/b>, <b>Trennlinien <\/b>und <b>Bildlaufleisten <\/b>auf den Wert <b>Nein <\/b>ein. Die Eigenschaft <b>Automatisch zentrieren <\/b>erh&auml;lt den Wert <b>Ja<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_06\/pic_1067_002.png\" alt=\"Das Zip-Formular in der Entwurfsansicht\" width=\"599,593\" height=\"417,108\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Das Zip-Formular in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Das Textfeld erh&auml;lt die Bezeichnung <b>txtZipdatei<\/b>, das Listenfeld soll <b>lstDateien <\/b>hei&szlig;en. Die Schaltfl&auml;chen statten Sie mit den Namen <b>cmdDateiauswahl<\/b>, <b>cmdNeu<\/b>, <b>cmdDateiHinzufuegen<\/b>, <b>cmdDateiEntfernen <\/b>und <b>cmdEntpacken <\/b>aus. F&uuml;r alle Schaltfl&auml;chen hinterlegen wir entsprechende Ereignisprozeduren.<\/p>\n<h2>Steuerelemente verankern<\/h2>\n<p>Damit wir mit dem Vergr&ouml;&szlig;ern des Formulars auch die entscheidenden Steuerelemente vergr&ouml;&szlig;ern k&ouml;nnen, stellen wir f&uuml;r das Textfeld <b>txtZipdatei <\/b>die Eigenschaft <b>Horizontaler Anker <\/b>auf <b>Beide <\/b>ein.<\/p>\n<p>Das Listenfeld <b>lstDateien <\/b>soll nach rechts und nach unten vergr&ouml;&szlig;erbar sein, also stellen wir nicht nur die Eigenschaft <b>Horizontaler Anker<\/b>, sondern auch die Eigenschaft <b>Vertikaler Anker <\/b>auf <b>Beide <\/b>ein.<\/p>\n<p>Beachten Sie, dass die entsprechenden Eigenschaften der mit den Steuerelementen verkn&uuml;pften Bezeichnungsfelder automatisch ge&auml;ndert werden. Sie m&uuml;ssen also f&uuml;r das Bezeichnungsfeld des Textfeldes die Eigenschaft <b>Horizontaler Anker <\/b>wieder auf <b>Links <\/b>und f&uuml;r das Bezeichnungsfeld die Eigenschaft <b>Horizontaler Anker <\/b>auf <b>Links <\/b>und <b>Vertikaler Anker <\/b>auf <b>Oben <\/b>zur&uuml;cksetzen.<\/p>\n<p>Wenn Sie das Formular nun in der Formularansicht nach rechts vergr&ouml;&szlig;ern, &uuml;berdecken das Textfeld und das Listenfeld die Schaltfl&auml;chen. Diese sollen mit nach rechts verschoben werden. Also stellen Sie die Eigenschaft <b>Horizontaler Anker <\/b>aller Schaltfl&auml;chen auf den Wert <b>Rechts <\/b>ein.<\/p>\n<h2>Beim Laden des Formulars<\/h2>\n<p>Das Laden des Formulars l&ouml;st die Ereignisprozedur <b>Form_Load<\/b> aus, die wie in Listing 1 aussieht. Die Prozedur erledigt einige vorbereitende Arbeiten. Gegebenenfalls wurde bereits zuvor eine Zip-Datei eingelesen oder angelegt, daher k&ouml;nnten sich noch Datens&auml;tze in der Tabelle <b>tblDateien <\/b>befinden.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     Me!txtZipdatei = Null\r\n     db.Execute \"DELETE FROM tblDateien\", dbFailOnError\r\n     Me!lstDateien.Requery\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Prozedur, die durch das Ereignis Beim Laden ausgel&ouml;st wird<\/span><\/b><\/p>\n<p>Diese sollen mit einer entsprechenden <b>DELETE<\/b>-Anweisung gel&ouml;scht werden. Au&szlig;erdem soll das Textfeld <b>txtZipdatei <\/b>geleert und das Listenfeld aktualisiert werden, sodass es keine Datens&auml;tze mehr anzeigt.<\/p>\n<h2>Datensatzherkunft des ListenBild 4feldes<\/h2>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_06\/pic_1067_006.png\" alt=\"Entwurf der Abfrage qryDateien\" width=\"700\" height=\"328,0762\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Entwurf der Abfrage qryDateien<\/span><\/b><\/p>\n<p>Das Listenfeld soll die Daten der Tabelle <b>tblDateien<\/b> anzeigen, allerdings nicht alle Felder davon und au&szlig;erdem in einer bestimmten Reihenfolge. Bild 4 zeigt, wie die Abfrage aufgebaut ist, um die gew&uuml;nschten Daten zu liefern.<\/p>\n<p>Die Abfrage verwendet die beiden Felder <b>GepackteGroesseText <\/b>und <b>UngepackteGroesseText <\/b>statt <b>GepackteGroesse <\/b>und <b>UngepackteGroesse<\/b>, da diese den Originalwert aus dem Zip-Archiv enthalten, der gleichzeitig die Einheit wie <b>Bytes <\/b>oder <b>KB <\/b>mitliefert. Die Felder <b>GepackteGroesse <\/b>und <b>UngepackteGroesse <\/b>enthalten die Zahlenwerte ohne Einheit, allerdings wird hieraus nicht deutlich, um welche Einheit es sich jeweils handelt. Das Ergebnis der Abfrage soll nach dem Wert des Feldes <b>Dateiname <\/b>sortiert werden.<\/p>\n<p>Die Abfrage speichern Sie unter dem Namen <b>qryDateien<\/b> (s. Bild 4). Dann weisen Sie diesen Namen der Eigenschaft <b>Datensatzherkunft <\/b>des Listenfeldes zu. Die Eigenschaft <b>Spaltenanzahl <\/b>stellen Sie auf den Wert <b>6 <\/b>ein, die Eigenschaft <b>Spaltenbreiten <\/b>auf den Wert <b>0cm;;4cm;2cm;2cm<\/b>.<\/p>\n<h2>Leeres Zip-Archiv erstellen<\/h2>\n<p>Die erste M&ouml;glichkeit ist das Erstellen eines neuen, leeren Zip-Archivs. Dazu verwenden wir die Schaltfl&auml;che namens <b>cmdNeu <\/b>mit der Beschriftung <b>Neu<\/b>. Die Schaltfl&auml;che l&ouml;st die Prozedur aus Listing 2 aus. Die Prozedur nutzt eine im Modul <b>mdlDateiauswahl <\/b>abgelegte Funktion namens <b>GetSaveFile<\/b>, um einen Dialog zur Angabe des zu verwendenden Dateinamens anzuzeigen (f&uuml;r weitere Informationen siehe Beispieldatenbank). Der aufgerufene Dialog filtert alle Dateien mit der Dateiendung <b>.zip <\/b>und bietet gleich den Dateinamen <b>*.zip <\/b>an (s. Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_06\/pic_1067_004.png\" alt=\"Festlegen des Namens einer neuen Zip-Datei\" width=\"549,6265\" height=\"375,1135\" \/><\/p>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Festlegen des Namens einer neuen Zip-Datei<\/span><\/b><\/p>\n<p>Der Name der zu erstellenden Datei wird dann in der Variablen <b>strZipdatei <\/b>gespeichert. Die folgende Anweisung ruft dann die Methode <b>ZipErstellen <\/b>auf und &uuml;bergibt den Dateinamen, damit die neue Zip-Datei erstellt werden kann. Danach l&ouml;scht die Prozedur alle aktuell in der Tabelle <b>tblDateien <\/b>gespeicherten Datens&auml;tze und aktualisiert den Inhalt des Listenfeldes <b>lstDateien<\/b>. Schlie&szlig;lich landet der Pfad zur neu erstellten Zip-Datei, die nun auch physisch auf der Festplatte liegt, im Textfeld <b>txtZipdatei<\/b>.<\/p>\n<h2>Vorhandenes Zip-Archiv &ouml;ffnen<\/h2>\n<p>Alternativ kann man mit der Schaltfl&auml;che mit den drei Punkten ein vorhandenes Zip-Archiv ausw&auml;hlen. Dessen Pfad soll dann ebenfalls im Textfeld <b>txtZipdatei <\/b>erscheinen. Au&szlig;erdem sollen die in der Zip-Datei enthaltenen Dateien im Listenfeld <b>lstDateien <\/b>erscheinen. Dazu m&uuml;ssen diese nat&uuml;rlich zuvor in der Tabelle <b>tblDateien <\/b>gespeichert werden.<\/p>\n<p>Die beim Klick auf die Schaltfl&auml;che <b>cmdDateiauswahl <\/b>ausgel&ouml;ste Ereignisprozedur sieht wie in Listing 3 aus. Die Prozedur verwendet eine weitere Funktion des Moduls <b>mdlDateiauswahl<\/b>, diesmal <b>OpenFileName<\/b>. Diese Funktion &ouml;ffnet einen Dialog, mit dem der Benutzer eine vorhandene Datei ausw&auml;hlen muss. Auch hier wird der Filter auf die Dateiendung <b>.zip <\/b>eingestellt. Der Pfad zu der vom Benutzer ausgew&auml;hlten Datei landet erst in der Variablen <b>strZipdatei <\/b>und dann im Textfeld <b>txtZipdatei<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdDateiauswahl_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>strZipdatei<span style=\"color:blue;\"> As String<\/span>\r\n     strZipdatei = OPENFILENAME(CurrentProject.Path, \"Zip-Datei ausw&auml;hlen\", \"Zip-Archiv(*.zip)\")\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(strZipdatei) &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         Me!txtZipdatei = strZipdatei\r\n         ZipdateiUntersuchen strZipdatei\r\n         Me!lstDateien.ColumnWidths = Me!lstDateien.ColumnWidths\r\n         Me!lstDateien.Requery\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Ausw&auml;hlen einer vorhandenen Zip-Datei<\/span><\/b><\/p>\n<p>Falls der Benutzer im Dialog die Schaltfl&auml;che <b>Abbrechen <\/b>verwendet, liefert die Funktion eine leere Zeichenkette zur&uuml;ck. In diesem Fall geschieht nichts weiter.<\/p>\n<p>Anderenfalls tr&auml;gt die Prozedur den Pfad zur gew&auml;hlten Datei in das Textfeld <b>txtZipdatei <\/b>ein und ruft die Funktion <b>ZipdateiUntersuchen <\/b>auf (siehe Beitrag <b>Zippen mit Access<\/b>, <b>www.access-im-unternehmen.de\/1064<\/b>). Diese &ouml;ffnet die Zip-Datei, liest alle enthaltenen Elemente aus und tr&auml;gt diese in die Tabelle <b>tblDateien <\/b>ein.<\/p>\n<p>Achtung: Dies gilt nur f&uuml;r die Dateien in der ersten Ebene, also nicht f&uuml;r Unterverzeichnisse in der Zip-Datei und darin enthaltene Elemente.<\/p>\n<p>Das Formular sollte die Dateien nun etwa wie in Bild 6 anzeigen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_06\/pic_1067_005.png\" alt=\"Das Formular nach dem Einlesen einer vorhandenen Zip-Datei\" width=\"649,559\" height=\"252,0553\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Das Formular nach dem Einlesen einer vorhandenen Zip-Datei<\/span><\/b><\/p>\n<h2>Dateien zum Zip-Archiv hinzuf&uuml;gen<\/h2>\n<p>Egal, ob Sie ein neues Zip-Archiv angelegt oder ein bestehendes referenziert haben, k&ouml;nnen Sie nun neue Dateien zu diesem Zip-Archiv hinzuf&uuml;gen. Dazu klicken Sie einfach auf die Schaltfl&auml;che mit dem Plus-Zeichen (<b>+<\/b>). Dies l&ouml;st das Ereignis <b>Beim Klicken <\/b>der Schaltfl&auml;che <b>cmdNeu <\/b>aus (s. Listing 4). Sollte noch keine Zip-Datei angelegt oder ausgew&auml;hlt worden sein, bricht die Prozedur mit einer entsprechenden Meldung ab.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdDateiHinzufuegen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>strDateien<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strZipdatei<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strDateiarray()<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngAnzahl<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngAnzahlGesamt<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(Me!txtZipdatei) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         strZipdatei = Me!txtZipdatei\r\n         strDateien = OpenFileNameMultiple(CurrentProject.Path, \"Dateien ausw&auml;hlen\", \"Alle Dateien (*.*)\")\r\n         strDateiarray = <span style=\"color:blue;\">Split<\/span>(strDateien, vbTab)\r\n         For i = <span style=\"color:blue;\">LBound<\/span>(strDateiarray) To <span style=\"color:blue;\">UBound<\/span>(strDateiarray)\r\n             Zippen strZipdatei, strDateiarray(i), lngAnzahl, <span style=\"color:blue;\">True<\/span>\r\n             lngAnzahlGesamt = lngAnzahlGesamt & lngAnzahl\r\n         <span style=\"color:blue;\">Next<\/span> i\r\n         <span style=\"color:blue;\">If <\/span>lngAnzahlGesamt &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n             ZipdateiUntersuchen strZipdatei\r\n             Me!lstDateien.Requery\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Keine Zip-Datei angelegt oder ausgew&auml;hlt.\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Hinzuf&uuml;gen neuer Dateien zu einem Zip-Archiv<\/span><\/b><\/p>\n<p>Anderenfalls schreibt die Prozedur als Erstes den Pfad zur Zip-Datei aus dem Textfeld <b>txtZipdatei <\/b>in die Variable <b>strZipdatei<\/b>. Dann ruft sie den Dialog zur Auswahl einer oder mehrerer Dateien auf. Diesen &ouml;ffnet wiederum die Funktion <b>OpenFileNameMultiple<\/b>, die Sie im Modul <b>mdlDateiauswahl <\/b>finden. Hier werden diesmal alle Dateien angeboten (<b>*.*<\/b>) &#8211; es geht ja schlie&szlig;lich nicht mehr um die Auswahl einer <b>.zip<\/b>-Datei, sondern um die darin zu archivierenden Dateien. <b>OpenFileNameMulti <\/b>liefert eine Zeichenkette mit den einzelnen Dateien, wobei diese jeweils durch das Tabulator-Zeichen voneinander getrennt werden. Die Dateinamenliste &uuml;berf&uuml;hren wir in das Array <b>strDateiarray<\/b>, und zwar mit der Funktion <b>Split<\/b>, welche die Dateiliste nach den enthaltenen Tabulator-Zeichen aufsplittet. Diese durchl&auml;uft die Prozedur danach in einer <b>For&#8230;Next<\/b>-Schleife. Darin ruft die Prozedur zuerst die Funktion <b>Zippen <\/b>auf, welche den Namen der Zip-Datei, den Namen der hinzuzuf&uuml;genden Datei aus dem Array <b>strDateiarray<\/b>, den R&uuml;ckgabeparameter <b>lngAnzahl <\/b>sowie den Wert <b>True <\/b>f&uuml;r den letzten Parameter erwartet. Dieser gibt an, dass einzelne Dateien hinzugef&uuml;gt werden sollen (siehe auch Beitrag <b>Zippen mit Access<\/b>, <b>www.access-im-unternehmen.de\/1064<\/b>). Die zweite Anweisung innerhalb der <b>For&#8230;Next<\/b>-Schleife addiert die Anzahl der hinzugef&uuml;gten Dateien aus dem R&uuml;ckgabeparameter <b>lngAnzahl <\/b>zur Variablen <b>lngAnzahlGesamt<\/b>.<\/p>\n<p>Hat <b>lngAnzahlGesamt<\/b> nach dem Durchlaufen der Schleife einen Wert gr&ouml;&szlig;er als <b>0<\/b>, ruft die Prozedur die Routine <b>ZipdateiUntersuchen <\/b>aus dem Modul <b>mdlZippen <\/b>auf und &uuml;bergibt den Pfad zu der soeben bef&uuml;llten Zip-Datei. Damit werden die in der Tabelle <b>tblDateien <\/b>aufgelisteten Dateien der Zip-Datei aktualisiert. Ein Requery aktualisiert schlie&szlig;lich das Listenfeld, damit dieses die aktuell in der Tabelle <b>tblDateien <\/b>gespeicherten Datens&auml;tze anzeigt.<\/p>\n<h2>Entfernen einer Datei aus dem Zip-Archiv<\/h2>\n<p>Wenn Sie eine Datei aus einem Zip-Archiv l&ouml;schen wollen, erledigen Sie das durch vorheriges Markieren der zu l&ouml;schenden Eintr&auml;ge im Listenfeld. Damit Sie mehr als einen Eintrag markieren k&ouml;nnen, haben wir die Eigenschaft <b>Mehrfachauswahl <\/b>auf den Wert <b>Erweitert <\/b>eingestellt. Das hei&szlig;t, dass Sie die Eintr&auml;ge wie im Windows Explorer ausw&auml;hlen k&ouml;nnen. Dabei markieren Sie einen einzelnen Eintrag einfach per Mausklick, zusammenh&auml;ngende Eintr&auml;ge, indem Sie den ersten Eintrag anklicken und dann bei gedr&uuml;ckter Umschalttaste den letzten Eintrag und nicht zusammenh&auml;ngende Eintr&auml;ge durch Anklicken bei gedr&uuml;ckter <b>Strg<\/b>-Taste.<\/p>\n<p>Die Prozedur aus Listing 5 wird durch einen Mausklick auf die Schaltfl&auml;che <b>cmdDateiEntfernen <\/b>ausgel&ouml;st. Sie deklariert eine Zeichenkette namens <b>strDatei <\/b>und eine <b>Variant<\/b>-Variable namens <b>varDatei <\/b>sowie eine Variable namens <b>strZipdatei <\/b>zum Aufnehmen des im Textfeld <b>txtZipdatei <\/b>gespeicherten Pfads zur Zip-Datei.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdDateiEntfernen_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>strDatei<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>varDatei<span style=\"color:blue;\"> As Variant<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strZipdatei<span style=\"color:blue;\"> As String<\/span>\r\n     strZipdatei = Me!txtZipdatei\r\n     For Each varDatei In Me!lstDateien.ItemsSelected\r\n         strDatei = Me!lstDateien.Column(1, varDatei)\r\n         AusZipLoeschen strZipdatei, strDatei\r\n     <span style=\"color:blue;\">Next<\/span> varDatei\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Entfernen von Dateien aus dem Zip-Archiv<\/span><\/b><\/p>\n<p>In einer <b>For Each<\/b>-Schleife durchl&auml;uft sie alle Elemente der Auflistung <b>ItemsSelected <\/b>des Listenfeldes, welche alle markierten Eintr&auml;ge liefert. Die Variable <b>varDatei <\/b>nimmt dabei jeweils den Index des aktuell durchlaufenen Eintrags auf. &uuml;ber die <b>Column<\/b>-Funktion mit dem Spaltenindex <b>1 <\/b>und dem Index aus der Variablen <b>varDatei <\/b>ermittelt die Prozedur innerhalb der Schleife den Inhalt der ersten Spalte des aktuellen Eintrags und speichert diesen in der Variablen <b>strDatei<\/b>.<\/p>\n<p>In der zweiten Anweisung ruft die Prozedur die Funktion <b>AusZipLoeschen <\/b>auf, die wir im Beitrag <b>Zippen mit Access <\/b>(<b>www.access-im-unternehmen.de\/1064<\/b>) vorstellen. Dieser &uuml;bergibt sie den Namen der Zip-Datei sowie den Namen der zu entfernenden Datei. Diese Funktion l&ouml;scht das genannte Element aus dem Zip-Archiv.<\/p>\n<p>Achtung: Auch dies funktioniert nur f&uuml;r Dateien, die sich in der ersten Ebene des Zip-Archivs befinden.<\/p>\n<h2>Entpacken von Dateien eines Zip-Archivs<\/h2>\n<p>Kommen wir nun zum Entpacken von Dateien aus dem aktuell angezeigten Zip-Archiv. Dies erledigen Sie mit der Schaltfl&auml;che <b>cmdEntpacken<\/b>. Die entsprechende Ereignisprozedur finden Sie in Listing 6.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdEntpacken_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>strZielverzeichnis<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strDatei<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>varDatei<span style=\"color:blue;\"> As Variant<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strZipdatei<span style=\"color:blue;\"> As String<\/span>\r\n     strZielverzeichnis = OpenPathName(CurrentProject.Path, \"Zielverzeichnis ausw&auml;hlen\")\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(strZielverzeichnis) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         strZipdatei = Me!txtZipdatei\r\n         For Each varDatei In Me!lstDateien.ItemsSelected\r\n             strDatei = Me!lstDateien.Column(1, varDatei)\r\n             EntzippenEinzeln strZipdatei, strZielverzeichnis, strDatei\r\n         <span style=\"color:blue;\">Next<\/span> varDatei\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">Exit Sub<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 6: Extrahieren von Dateien aus einem Zip-Archiv<\/span><\/b><\/p>\n<p>Die Prozedur erfragt zun&auml;chst &uuml;ber die Funktion <b>Open-Path-name <\/b>das Verzeichnis, in das die markierten Listenelemente extrahiert werden sollen (s. Bild 7). Diese Funktion finden Sie wie die anderen Funktionen zur Dateiauswahl im Modul <b>mdlDateiauswahl<\/b>. Sie erwartet das Startverzeichnis sowie eine &uuml;berschrift als Parameter und liefert den Pfad des gew&auml;hlten Verzeichnisses als R&uuml;ckgabewert.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_06\/pic_1067_007.png\" alt=\"Auswahl des Zielverzeichnisses zum Extrahieren von Dateien\" width=\"599,593\" height=\"336,3341\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Auswahl des Zielverzeichnisses zum Extrahieren von Dateien<\/span><\/b><\/p>\n<p>Danach durchl&auml;uft sie ebenfalls eine <b>For Each<\/b>-Schleife &uuml;ber alle markierten Eintr&auml;ge des Listenfeldes <b>lstDateien<\/b>. Die Namen der zu extrahierenden Dateien werden ebenfalls &uuml;ber die <b>ItemsSelected<\/b>-Eigenschaft und die <b>Column<\/b>-Eigenschaft ermittelt und in die Variable <b>strDatei <\/b>eingetragen. Die zweite Anweisung der <b>For Each<\/b>-Schleife ruft die Funktion <b>EntzippenEinzeln <\/b>des Moduls <b>mdlZippen <\/b>auf  &#8211; siehe Beitrag <b>Zippen mit Access <\/b>(<b>www.access-im-unternehmen.de\/1064<\/b>). Diese erwartet als Parameter den Namen der Zipdatei, das Zielverzeichnis sowie den Namen der zu extrahierenden Datei.<\/p>\n<h2>Formular sch&ouml;n machen<\/h2>\n<p>Zugegebenerma&szlig;en sieht das Formular, insbesondere die Schaltfl&auml;chen, wenig liebevoll gestaltet aus. Also wollen wir die Schaltfl&auml;chen zumindest noch mit ein paar Icons versehen und diese oberhalb des Listenfeldes anordnen &#8211; so wie Sie es vielleicht von Programmen wir WinZip oder WinRar kennen.<\/p>\n<p>Markieren Sie eine Schaltfl&auml;che, beispielsweise <b>cmdNeu<\/b>, und w&auml;hlen Sie dann den Ribbon-Eintrag <b>Bild einf&uuml;gen|Durchsuchen <\/b>auf. Wenn Sie eine Sammlung von Icons haben, in denen sich passende Icons finden, k&ouml;nnen Sie diese nun ausw&auml;hlen und so zu den jeweiligen Schaltfl&auml;chen hinzuf&uuml;gen.<\/p>\n<p>Die Eigenschaft <b>Hintergrundart <\/b>der Schaltfl&auml;chen stellen wir auf <b>Transparent <\/b>ein, die Gr&ouml;&szlig;e muss nat&uuml;rlich entsprechend der Bildgr&ouml;&szlig;e angepasst werden (im Beispiel etwa f&uuml;r 32&#215;32 Pixel gro&szlig;e Icons).<\/p>\n<p>Die Eigenschaft <b>Horizontaler Anker <\/b>stellen Sie nun wieder auf <b>Links <\/b>ein (weiter oben haben wir diese auf <b>Rechts <\/b>eingestellt). Au&szlig;erdem f&uuml;gen wir noch eine Schaltfl&auml;che zum Schlie&szlig;en des Formulars hinzu und platzieren diese am rechten Rand &#8211; mit der Einstellung <b>Rechts <\/b>f&uuml;r die Eigenschaft <b>Horizontaler Anker<\/b>. Wenn wir nun noch die Eigenschaft Rahmenart auf Keine einstellen, erhalten wir das schicke Formular aus Bild 8.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_06\/pic_1067_008.png\" alt=\"Optisch ansprechendere Version des Formulars\" width=\"424,7115\" height=\"302,56\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Optisch ansprechendere Version des Formulars<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Der Beitrag liefert eine kleine, aber feine L&ouml;sung zum Zugriff auf Zip-Archive von Access aus. Die M&ouml;glichkeiten sind hier auf die Datei-Elemente der ersten Ebene beschr&auml;nkt, aber f&uuml;r die meisten F&auml;lle d&uuml;rfte dies ausreichend sein.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Zipformular.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/31088236-9ADD-42C8-878A-4AC6FDD72E90\/aiu_1067.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie das Zippen unter Access mit Bordmitteln funktioniert, haben Sie im Artikel &#8222;Zippen mit Access&#8220; erfahren. Im vorliegenden Beitrag schauen wir uns nun an, wie Sie die VBA-Funktionen zum Packen, Entpacken und L&ouml;schen von Elementen aus Zip-Dateien von einem Formular aus nutzen k&ouml;nnen, sodass auch einfache Benutzer damit arbeiten k&ouml;nnen.<\/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,66062016,44000027],"tags":[],"class_list":["post-55001067","post","type-post","status-publish","format-standard","hentry","category-662016","category-66062016","category-Loesungen"],"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>Zip-Formular - 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\/ZipFormular\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zip-Formular\" \/>\n<meta property=\"og:description\" content=\"Wie das Zippen unter Access mit Bordmitteln funktioniert, haben Sie im Artikel &quot;Zippen mit Access&quot; erfahren. Im vorliegenden Beitrag schauen wir uns nun an, wie Sie die VBA-Funktionen zum Packen, Entpacken und L&ouml;schen von Elementen aus Zip-Dateien von einem Formular aus nutzen k&ouml;nnen, sodass auch einfache Benutzer damit arbeiten k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/ZipFormular\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T13:35:19+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg09.met.vgwort.de\/na\/5da337a12b304c3daeb7f5107d9587a1\" \/>\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=\"14\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Zip-Formular\",\"datePublished\":\"2020-05-22T13:35:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/\"},\"wordCount\":2511,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/5da337a12b304c3daeb7f5107d9587a1\",\"articleSection\":[\"2016\",\"6\\\/2016\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/\",\"name\":\"Zip-Formular - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/5da337a12b304c3daeb7f5107d9587a1\",\"datePublished\":\"2020-05-22T13:35:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/5da337a12b304c3daeb7f5107d9587a1\",\"contentUrl\":\"http:\\\/\\\/vg09.met.vgwort.de\\\/na\\\/5da337a12b304c3daeb7f5107d9587a1\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ZipFormular\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zip-Formular\"}]},{\"@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":"Zip-Formular - 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\/ZipFormular\/","og_locale":"de_DE","og_type":"article","og_title":"Zip-Formular","og_description":"Wie das Zippen unter Access mit Bordmitteln funktioniert, haben Sie im Artikel \"Zippen mit Access\" erfahren. Im vorliegenden Beitrag schauen wir uns nun an, wie Sie die VBA-Funktionen zum Packen, Entpacken und L&ouml;schen von Elementen aus Zip-Dateien von einem Formular aus nutzen k&ouml;nnen, sodass auch einfache Benutzer damit arbeiten k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/ZipFormular\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T13:35:19+00:00","og_image":[{"url":"http:\/\/vg09.met.vgwort.de\/na\/5da337a12b304c3daeb7f5107d9587a1","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"14\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/ZipFormular\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/ZipFormular\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Zip-Formular","datePublished":"2020-05-22T13:35:19+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/ZipFormular\/"},"wordCount":2511,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/ZipFormular\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/5da337a12b304c3daeb7f5107d9587a1","articleSection":["2016","6\/2016","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/ZipFormular\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/ZipFormular\/","url":"https:\/\/access-im-unternehmen.de\/ZipFormular\/","name":"Zip-Formular - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/ZipFormular\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/ZipFormular\/#primaryimage"},"thumbnailUrl":"http:\/\/vg09.met.vgwort.de\/na\/5da337a12b304c3daeb7f5107d9587a1","datePublished":"2020-05-22T13:35:19+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/ZipFormular\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/ZipFormular\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/ZipFormular\/#primaryimage","url":"http:\/\/vg09.met.vgwort.de\/na\/5da337a12b304c3daeb7f5107d9587a1","contentUrl":"http:\/\/vg09.met.vgwort.de\/na\/5da337a12b304c3daeb7f5107d9587a1"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/ZipFormular\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Zip-Formular"}]},{"@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\/55001067","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=55001067"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001067\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}