DoCmd.TransferText: not so easy
Marzer
Gesendet: 26.08.19 18:09
Betreff: DoCmd.TransferText: not so easy


Veteran

Beiträge: 101
100
Problem
Ich importiere Daten aus einer .csv-Datei in eine Access-Tabelle.
Die erste Zeile der Daten enthält die Feldnamen.
Der VBA-Befehl sieht so aus:
DoCmd.TransferText acImportDelim, , "tbl_FunctionType", me.txtFileFunctionsFullname.Value, True, , c_varCodePageUTF8
TRUE als 5. Parameter bedeutet gemäss Dokumentation: Achtung, die 1. Zeile enthält keine Daten, sondern die Namen der Felder.
VBA findet die Datei, öffnet sie und meldet sofort einen Fehler:
"Das Feld .... ist nicht vorhanden."
An der Stelle der Punkte zählt VBA die Namen der ersten Felder auf, die in der Datei auf der 1. Zeile aufgeführt sind:
id;rpr_id;label_de;label_de_m;label_de_f;label_fr;label_fr_m
Diese Namen entsprechen den Namen der Felder in der DB-Tabelle.
--
Der manuelle Import über die Menu-Option "Externe Daten / Text-Datei" funktioniert mit denselben Angaben einwandfrei.
VBA erkennt anscheinend den Delimiter ';' nicht und interpretiert die ganze erste Zeile als einen einzelnen Feldnamen.
Den verwendeten Delimiter kann man beim manuellen Import frei definieren, im VBA-Befehl nicht.
--
Lösung
Man muss den Import manuell durchspielen und die gewählten Spezifikationen abspeichern (Command Button 'Erweitert', 'Speichern unter').
Und dann im VBA-Befehl als 2. Parameter den Namen der Import-Spezifikation einsetzen:
DoCmd.TransferText acImportDelim, "Name der Spezifikation" , "tbl_FunctionType", me.txtFileFunctionsFullname.Value, True, , c_varCodePageUTF8
Einen Hinweis auf diese Eigenart des TransferText-Commands habe ich bei Herrn Google bisher nicht gefunden.



Top of the page Bottom of the page