August 15, 2020, 06:58:24

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


automatisierter Import einer csv-Datei mit Wildcard

Begonnen von volvisti, Juli 28, 2020, 12:37:29

⏪ vorheriges - nächstes ⏩

volvisti

Hallo zusammen,
leider bin ich hier nicht fündig geworden, daher erstelle ich ein neues Thema.

Mein Anliegen ist eine csv-Datei mit festem und variablem Namensbestandteil per Macro zu importieren.
Der feste Teil lautet "BestellungenMitPositionen" und der variable Teil ist "_Datum_Uhrzeit".

Nun habe ich im Netz folgendes Macro gefunden und entsprechend modifiziert.
Auf Basis der Datei und der benötigten Spalten habe ich eine Import_Spec erstellt.

Sub importfiles()
  Dim strFound As String
  Dim strSearch As String
 
  strSearch = "b:\BestellungenMitPositionen*.csv"
  strFound = Dir(strSearch)
 
  Do Until Len(strFound) = 0
    DoCmd.TransferText acImportDelim, "BestellungenMitPositionen_Importspec", "BestellungenMitPositionen", strFound, False
    strFound = Dir()
  Loop
End Sub

Das funktioniert bei mir (Access 2016) nur leider nicht wie gewünscht.
Ich erhalte, egal ob ich die Datei im Netzwerkpfad oder lokal ablege, einen Laufzeitfehler '3011' angezeigt, mit dem ich nicht wirklich etwas anfangen kann. (siehe Anhang)
Klicke ich auf debuggen wird mir die Zeile nach "Do Until" angezeigt.

Kann sich bitte jemand mal die Fehlermeldung ansehen und mir erklären, wo der Fehler liegt?
Wäre Super.

Bei dem, der hier gefragt hat, läuft es scheinbar.    :(  :o

Jonny

Hallo,
diese Routine würde, wenn sie dann läuft, mehrere Dateien importieren.
Im Feld strFound steht der Name der Datei (nach dem DIR)
Setze hier mal einen Haltepunkt und schau dir den Dateinamen an.


ebs17

Die Dir-Anweisung gibt nur den Dateinamen inklusive Dateierweiterung zurück. Das kannst Du selbst überprüfen.
Zur Verwendung solltest Du den Pfad voranstellen. Mit vollständigem Pfad sollte die Datei gefunden werden.
Mit freundlichem Glück Auf!

Eberhard

volvisti

Zunächst einmal danke für die schnellen Rückmeldungen.
Also:

  Dim strFound As String -> "BestellungenMitPositionen_20200725_060044.csv"
  Dim strSearch As String -> "b:\BestellungenMitPositionen*.csv"
 
  strSearch = "b:\BestellungenMitPositionen*.csv"
  strFound = Dir(strSearch) -> "BestellungenMitPositionen_20200725_060044.csv"
 
  Do Until Len(strFound) = 0
    DoCmd.TransferText acImportDelim, "BestellungenMitPositionen_Importspec", "BestellungenMitPositionen", strFound, False -> "BestellungenMitPositionen_20200725_060044.csv"
    strFound = Dir()

Hab mal die Rückmeldungen der Variablen in kursiv eingefügt.

Verstehe ich es richtig, dass eigentlich, bei einer Datei die Zeile DoCmd.Transfer.... ausreicht, um die Datei einzulesen?

Was ich nicht vertsehe ist, dass die Routine ja die richtige Datei findet und in den Variablen anzeigt, mir aber zuschreit, dass sie die Datei nicht finden kann.  :confused:

DF6GL

Hallo,

hast Du den Beitrag von Eberhard (ebs17) nicht gelesen?

Dort ist der Weg zur Lösung des Problems beschrieben...


Nochmal:

ZitatWas ich nicht vertsehe ist, dass die Routine ja die richtige Datei findet und in den Variablen anzeigt, mir aber zuschreit, dass sie die Datei nicht finden kann

Es wird/werden zwar die "richtige(n) Datei(en) gefunden, es wird aber nur der Name der Datei(en) ohne Pfadangabe wird in die Variable geschrieben. Und ohne Pfadangabe findet TransferText  die Datei nicht.


volvisti

Hallo DF6GL,
ich hatte den Beitrag gelesen.

Allerdings:
"Ich lese Deine Worte schon, allein mir fehlt das Verständnis."

Sorry, hatte gerade irgendwie ein Brett vor dem Kopf.

Hab nun die DoCmd-Zeile geändert. ..."B:\" & strfound, False
Und schon klappt es mit dem Import.

Besten Dank an alle.
Es kann so einfach sein, wenn man weiß, wie es geht. :-)