Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2013.

Diesen Artikel jetzt als PDF plus Beispieldatenbank herunterladen?

Wenn Sie sich jetzt für den Newsletter anmelden, erhalten Sie in Kürze eine E-Mail mit dem Artikel im PDF-Format plus Beispieldatenbank.

Hier anmelden:1125559872

E-Mail:

Anrede:

Vorname:

Nachname:

Zusammenfassung

Erfahren Sie, warum seit Access 2007 kein Textexport mehr per VBA gelingt und lernen Sie eine schnelle Möglichkeit zur Abhilfe kennen.

Techniken

VBA, Export

Voraussetzungen

Access 2000

Beispieldateien

Textexport.mdb

Shortlink

www.access-im-unternehmen.de/887

VBA-Textexport unter Access 2007 und jünger

André Minhorst, Duisburg

Normalerweise ist das Exportieren von Tabellen oder Abfragen als Text- oder CSV-Datei kein Problem - Sie nutzen entweder den Assistenten dazu oder verwenden die Methode TransferText des DoCmd-Objekts. Dummerweise führt dies, auch wenn es in Anwendungen bis Access 2003 funktionierte, unter neueren Versionen von Access zu einem Fehler. Warum dies geschieht und wie Sie TransferText weiter nutzen können, erläutert dieser Beitrag.

Wenn Sie einen Export der Daten einer Tabelle oder Abfrage in eine Textdatei per VBA automatisieren möchten, verwenden Sie normalerweise die TransferText-Methode des DoCmd-Objekts wie in folgendem Beispiel:

DoCmd.TransferText acExportDelim, , "tblArtikel", CurrentProject.Path & "\tblArtikel.txt"

Dies löst unter Access 2007 und jünger den Fehler aus Abb. 1 aus. Anscheinend verwendet Access, wenn nichts anderes angegeben wird, entweder das Dezimaltrennzeichen oder das Texttrennzeichen als Feldtrennzeichen. Früher verwendete Access standardmäßig das Semikolon, aber Microsoft scheint hier etwas geändert zu haben. Welches Trennzeichen wird aber nun tatsächlich verwendet?

pic001.png

Abb. 1: Fehlermeldung beim Versuch, eine Tabelle mit DoCmd.TransferText ohne Angabe einer Export-Spezifikation zu exportieren

Um dies herauszufinden, habe ich probehalber das Trennzeichen in der Systemsteuerung von Windows verändert - am Fehler ändert sich dadurch jedoch nichts.

Fehlerfrei mit Export-Spezifikation

Es gibt nur eine Lösung für das Problem: Sie müssen eine Export-Spezifikation angeben. Diese ist natürlich zuvor noch zu erstellen, was sich aber durch einmaliges Durchlaufen des Export-Assistenten erledigen lässt. Dazu rufen Sie den entsprechenden Assistenten auf (unter Access 2010 etwa mit dem Ribbon-Eintrag Externe Daten|Exportieren|Textdatei) und klicken dort auf OK (nicht die Option Exportieren von Daten mit Formatierung und Layout aktivieren!). Nun klicken Sie auf die Schaltfläche Erweitert und dann auf Speichern unter. Geben Sie den gewünschten Namen für die Spezifikation an und speichern Sie die Spezifikation (s. Abb. 2).

pic002.png

Abb. 2: Speichern einer Export-Spezifikation

Den Assistenten können Sie nun abbrechen, ohne den Export durchzuführen - wir wollten nur eine beliebige Spezifikation anlegen, um diese für den Export per VBA nutzen zu können. Natürlich können Sie hier noch weitere Eigenschaften festlegen, wenn Sie diese benötigen - dies ist aber nicht Thema dieses Beitrags.

Nach dem Anlegen der Spezifikation und dem erneuten Aufruf der TransferText-Methode - diesmal unter Berücksichtigung der gespeicherten Spezifikation - gelingt auch der Export ohne Fehler:

DoCmd.TransferText acExportDelim, Spec_tblArtikel", "tblArtikel", CurrentProject.Path & "\tblArtikel.txt"

Problem: Viele Exporte

Was aber, wenn eine Anwendung sehr viele Aufrufe der TransferText-Methode enthält? Sollten Sie diese in einer älteren Access-Version verwendet haben, klappte dies reibungslos. Unter Access 2007 und neuer löst jedoch jeder Text-Export ohne Spezifikation einen Fehler aus.

Wenn Sie keine Lust haben, für jede zu exportierende Tabelle oder Abfrage von Hand eine Export-Spezifikation zu erstellen, gibt es gute Nachrichten: Diese Aufgabe lässt sich auch per Code erledigen. Die Spezifikationen werden nämlich in Systemtabellen gespeichert: Die Basisinformationen landen in der Tabelle MSysIMEXSpecs und die Informationen zu den einzelnen Feldern in mehreren Datensätzen der Tabelle MSysIMEXColumns.

Im Gegensatz zu den übrigen Systemtabellen sind diese nicht geschützt und Sie können die Daten leicht per VBA hinzufügen. Es geht sogar noch weiter: Die Tabellen sind standardmäßig nicht angelegt und werden erst von Access erzeugt, wenn der Benutzer die erste Spezifikation speichert.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Diesen Artikel jetzt als PDF plus Beispieldatenbank herunterladen?

Wenn Sie sich jetzt für den Newsletter anmelden, erhalten Sie in Kürze eine E-Mail mit dem Artikel im PDF-Format plus Beispieldatenbank.

Hier anmelden:

E-Mail:

Anrede:

Vorname:

Nachname:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.