Home > Artikel > Ausgabe 6/2011 > Im- und Export-Spezifikationen definieren und verwenden

Im- und Export-Spezifikationen definieren und verwenden

  PDF ansehen

  Download PDF und Beispieldatenbank

Wer oft Daten mit anderen Anwendungen austauscht und dabei die Import- und Export-Funktionen von Access nutzt, arbeitet meist mit den dafür vorgesehenen Assistenten. Dumm nur, wenn man die notwendigen Einstellungen für jeden Im- und Export neu vornehmen muss. Das muss nicht sein: Access bietet die Möglichkeit, die Einstellungen als Spezifikation zu speichern und diese später auf verschiedene Arten zu nutzen.

Beispieldatenbank

Die Beispiele zu diesem Artikel finden Sie in der Datenbank 1106_Spezifikationen.mdb.

Spezifikationen speichern

Die Assistenten für den Import und Export von Daten kennen Sie bereits aus verschiedenen Artikeln. In Daten importieren – Teil I: Daten aus CSV-Dateien lernen Sie etwa den Import kennen, in CSV-Export für Adressdaten den Export von Daten.

Die Assistenten zum Im- und Exportieren besitzen eine unscheinbare, oft übersehene Schaltfläche namens Erweitert....

Ein Klick darauf öffnet einen weiteren Dialog, der nicht nur alle Einstellungen übersichtlich darstellt, sondern der auch noch die Möglichkeit zum Speichern von Spezifikationen bietet, sondern auch eine zum erneuten Öffnen bereits gespeicherter Spezifikationen (siehe Bild 1).

Der Dialog mit der Zusammenfassung der Einstellungen

Bild 1: Der Dialog mit der Zusammenfassung der Einstellungen

Wenn Sie die gewünschten Einstellungen vorgenommen haben, klicken Sie auf die Schaltfläche Speichern unter ... und geben im nun erscheinenden Dialog Import/Export-Spezifikation speichern den Namen ein, unter dem Access die Spezifikation speichern soll.

Nachdem dies geschehen ist, klicken Sie auf die Schaltfläche Spezifikationen ..., um sich die Liste der verfügbaren Spezifikationen anzusehen (siehe Bild 2).

Öffnen oder Löschen bestehender Spezifikationen

Bild 2: Öffnen oder Löschen bestehender Spezifikationen

Import/Export nach Spezifikationen

Der Vorteil einer Spezifikation ist dieser: Sie können Daten damit importieren und exportieren, ohne jedesmal alle Einstellungen neu eingeben zu müssen. Ein kleiner Wermutstropfen bleibt dennoch: Sie können die Quell-/Zieldatei nicht mit der Spezifikation speichern, sondern müssen diese jedes Mal neu auswählen.

Das heißt, dass Sie beim Verwenden einer gespeicherten Spezifikation den Assistenten starten, die Quell-/Zieldatei festlegen, im Assistenten zur Erweitert...-Sektion wechseln und dort über die Schaltfläche Spezifikationen die gewünschte Spezifikation auswählen.

Spezifikationen anpassen

Ein weiterer Vorteil beim Einsatz von Spezifikationen ist, dass Sie diese nachträglich anpassen können. Dazu öffnen Sie diese ebenfalls über den Assistenten, laden die gewünschte Spezifikation, nehmen die Änderung vor und speichern die Spezifikation wieder.

Import/Export per VBA starten

Am meisten nützen Spezifikationen denjenigen, die regelmäßig die gleichen Import/Export-Operationen durchführen. Wenn Sie einmal einen Import oder Export als Spezifikation gespeichert haben, können Sie die Operation mit einer einzigen VBA-Zeile aufrufen.

Dazu verwenden Sie die TransferSpreadsheet oder die TransferText-Anweisung des DoCmd-Objekts. Lassen Sie sich von Ausdrücken wie DoCmd-Objekt an dieser Stelle nicht durcheinanderbringen und nehmen Sie die nachfolgend dokumentierten Befehle vorerst einfach hin.

Die TransferText-Anweisung dient generell dem Import-, dem Export und dem Verknüpfen von Textdateien. Die TransferSpreadsheet-Anweisung ist prinzipiell eine Spezialisierung von TransferText, denn es bezieht sich auf Excel-Tabellen und enthält noch einige auf Excel ausgelegte Besonderheiten.

Wir schauen uns an dieser Stelle jedoch nur die TransferText-Anweisung an. Sie können diese zu Testzwecken im Direktfenster des VBA-Editors ausprobieren.

Das Direktfenster öffnen Sie von Access aus am schnellsten mit der Tastenkombination Strg + G.

Wenn Sie dort DoCmd gefolgt von einem Punkt eingeben, bietet der VBA-Editor gleich alle möglichen Anweisungen dieses Objekts an. Das Eintippen der ersten Buchstaben der gewünschten Anweisung führt dann schnell zum Eintrag TransferText (siehe Bild 3).

Der VBA-Editor unterstützt Sie bei der Eingabe von DoCmd-Anweisungen.

Bild 3: Der VBA-Editor unterstützt Sie bei der Eingabe von DoCmd-Anweisungen.

Wenn Sie diese Anweisung eingegeben haben und noch ein Leerzeichen hinterher schicken, erscheint gleich die Parameterliste der TransferText-Anweisung (siehe Bild 4).

Auch beim Festlegen der Parameter hilft der VBA-Editor mit IntelliSense weiter.

Bild 4: Auch beim Festlegen der Parameter hilft der VBA-Editor mit IntelliSense weiter.

Die Anweisung verwendet die folgenden Parameter (es gibt noch zwei weitere Parameter, die aber in diesem Fall nicht zum Einsatz kommen):

  • TransferType: Art des Transfers. Grundsätzlich gibt es drei Arten, nämlich Import, Export und Verknüpfen. Zu jeder dieser drei Arten fügt dieser Parameter noch die in diesem Fall wichtige Einstellung hinzu, ob die Daten in Spalten mit fester Breite untergebracht sind oder ob diese durch ein Begrenzungszeichen wie ein Semikolon et cetera voneinander getrennt werden. Die Konstante acExportDelim bedeutet also, dass die Daten exportiert und je Zeile durch Begrenzungszeichen getrennt werden.
  • SpecifikationName: Erwartet den Namen einer gespeicherten Spezifikation, wie wir sie oben angelegt haben.
  • TableName: Name der Tabelle, aus der die Daten exportiert werden sollen beziehungsweise die das Ziel eines Imports ist. Bei einer Verknüpfung tragen Sie hier den Namen ein, unter dem die Verknüpfung im Datenbankfenster/Navigationsbereich angezeigt werden soll.
  • Filename: Pfad und Name der Ziel/Quell-Datei.
  • HasFieldNames: Gibt an, ob beim Export die Feldnamen der Datenherkunft in die erste Zeile der Zieldatei geschrieben werden sollen oder ob beim Import der Inhalt der ersten Zeile als Feldnamen und nicht als Daten verarbeitet werden sollen.

Sollten Sie also nun eine Export-Spezifikation gespeichert haben, können Sie diese über das Direktfenster wie folgt aufrufen (in einer Zeile):

DoCmd.TransferText acExportDelim, "ExportAdressdaten", "qryExportAdressdaten", _

    CurrentProject.Path & "ExportAdressdaten.csv", _

    False

Der Ausdruck CurrentProject.Path liefert hier das Verzeichnis, in der sich die aktuelle Datenbank befindet (wenn die Datei c: estBeispiel.mdb heißt, kommt beispielsweise c: ext dabei heraus).

Sie sehen hier bereits, dass Informationen wie die Quelltabelle oder die Zieldatei nicht mit der Spezifikation gespeichert werden, sondern mit der TransferText-Anweisung festgelegt werden müssen – genau wie es auch beim Einsatz des Assistenten geschieht. Auch dort müssen Sie die Quelltabelle oder -abfrage sowie die Zieldatei manuell auswählen. Die TransferText-Anweisung wäre also ein Fortschritt – aber nur, wenn man diese nicht jedesmal im Direktfenster des VBA-Editors eingeben muss.

Import/Export per VBA-Prozedur

Das ist natürlich auch nicht nötig: Sobald Sie einen Import oder Export einmal als Spezifikation gespeichert und die TransferText-Methode eingegeben haben, können Sie diese auch einer VBA-Prozedur hinzufügen.

Dazu legen Sie, sofern noch keines vorhanden ist, ein neues VBA-Modul an (VBA-Modul anlegen) und fügen die Anweisung in eine eigens dafür angelegte VBA-Prozedur ein. Dies sieht dann so aus:

Public Sub ExportKunden()

     DoCmd.TransferText acExportDelim, "ExportAdressdaten", "qryExportAdressdaten", _

         CurrentProject.Path & "ExportAdressdaten_1.csv", False

End Sub

Die Prozedur können Sie dann von verschiedenen Orten aus aufrufen – beispielsweise von einer Beim Klicken-Ereignisprozedur einer Schaltfläche aus.

TransferText flexibel aufrufen

Nun fehlt nur noch ein wenig Flexibilität. Es kommt zum Beispiel vor, dass Daten in bestimmten Zeitintervallen exportiert werden sollen. Es ist dann sinnvoll, etwa dem Dateinamen einen Hinweis auf den Zeitpunkt des Exports hinzuzufügen.

Der Inhalt der obigen Prozedur würde dann etwa so aussehen:

Dim strDateiname As String

strDateiname = CurrentProject.Path & "ExportAdressdaten_" & Format(Date, "yyyymmdd") & ".csv"

DoCmd.TransferText acExportDelim, "ExportAdressdaten", "qryExportAdressdaten", _

    strDateiname, False

Der Dateiname wird dabei noch um das Datum etwa in der Form yyyymmdd ergänzt. Dies liefert beispielsweise Dateinamen wie C:BeispieleExportAdressdaten_20110620.csv.