Neuigkeiten:

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

Mobiles Hauptmenü

Import von Txt dateien in Access

Begonnen von KlaSur, Oktober 06, 2023, 12:19:26

⏪ vorheriges - nächstes ⏩

KlaSur

Hallo,

ich bin neu hier. Ich haben foldendes Problem. Ich habe einen VBA-Code laut Buch abgeschrieben:

Hier der Code :
Option Compare Database
Option Explicit

Sub TextdateiInDirektbereich()
Dim strTextzeile As String

Open Application.CurrentProject.Path & "P:/klaus1.txt" For Input As #1

  Do While Not EOF(1)
      Line Input #1, strTextzeile
      Debug.Print strTextzeile
  Loop
  Close #1
     
End Sub

Bei der Ausführung mit F5 gibt es eine Fehlermeldung

Laufzeitfehler 52
Dateinamen oder Nummer falsch

Das Laufwerk ist da und die Datei auch!

Kann mir da jemand helfen ?

Schöne Grüsse aus dem Münsterland

KlaSur



MzKlMu

Hallo,
warum verwendest Du nicht die eingebaute Importfunktion von Access ?
Mit Deiner Version hast Du ja auch noch das Problem die Zeile in die einzelenen Access Felder zu übertragen.
Gruß Klaus

PhilS

Generell schließe ich mich der Anmerkung von MzKlMu an. In der großen Mehrheit der Fälle ist es sinnvoller die eingebaute Text-Import-Funktionalität von Access zu verwenden (DoCmd.TransferText).
Zitat von: KlaSur am Oktober 06, 2023, 12:19:26Open Application.CurrentProject.Path & "P:/klaus1.txt" For Input As #1
Für den Dateipfad/-name solltest du einen Backslash anstatt des hier gezeigten Forward-Slash verwenden.

Außerdem ist es keine so gute Idee die Dateinummer hardcodiert in den Programmcode zu schreiben. Man sollte besser mit der FreeFile Funktion die nächste freie Nummer abrufen und in einer Variable für die weitere Verwendung speichern.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

markusxy

Zitat von: KlaSur am Oktober 06, 2023, 12:19:26Application.CurrentProject.Path & "P:/klaus1.txt"

Der fehler wird die Verknüpfung der beiden Pfade sein.
Lass den ersten Teil einfach weg, dann sollte es funktionieren.

KlaSur

Danke für eure Stellungnahmen!

Habe es bei ChatGPt einmal eingestellt. Da hat es sofort ein VBA Code ausgeworfen. Da bin ich gerade dabei den entsprechend einzustellen.

Sub ImportTXT()
    Dim db As Database
    Dim rs As Recordset
    Dim strFilePath As String
    Dim strTableName As String

    ' Pfad zur TXT-Datei angeben
    strFilePath = "P:\3.00-090-A009167_A_Matze1.txt"

    ' Name der Zieltabelle angeben
    strTableName = "Versuch"

    ' Datenbank öffnen
    Set db = CurrentDb

    ' Tabelle erstellen oder leeren, falls sie bereits existiert
    On Error Resume Next
    db.TableDefs.Delete strTableName
    On Error GoTo 0

    ' Tabelle erstellen
    db.Execute "CREATE TABLE " & strTableName & " (Menge Number, Dateiname Text, Titel Text, Manager Text, Stichworter Text, Firma Text, Material Text, Materialstarke Text)" ' Hier die Felder entsprechend anpassen

    ' Recordset öffnen
   
    Set rs = db.OpenRecordset(strTableName)

    ' TXT-Datei einlesen und in die Tabelle importieren
    Open strFilePath For Input As #1

    Do Until EOF(1)
        Line Input #1, strLine

        ' Daten in einzelne Felder aufteilen (hier wird davon ausgegangen, dass die Felder durch Tabulatoren getrennt sind)
        arrFields = Split(strLine, vbTab)

        ' Neue Zeile im Recordset hinzufügen und Daten einfügen
        rs.AddNew

        rs.Fields("Feld1").Value = arrFields(0) ' Hier die Felder entsprechend anpassen
        rs.Fields("Feld2").Value = arrFields(1)
        rs.Fields("Feld3").Value = arrFields(2)

        rs.Update
    Loop

    ' Recordset und Datenbank schließen
    rs.Close
    db.Close

    ' Speicher freigeben
    Set rs = Nothing
    Set db = Nothing

    MsgBox "Import abgeschlossen."
End Sub

Bei Set rs = db.OpenRecordset(strTableName) bleibt der Code stehen:
Fehlermeldung : Laufzeitfehler 13
                Typen unverträglich

Die Versuch Tabelle wird mit den Fehler angelegt aber dann geht es nicht weiter.

Der Versuch die Access Importfunktion zu nutzen schlug leider Fehl, der hat nicht mal die Datei gefunden!!

Gruß KlaSur


PhilS

Zitat von: KlaSur am Oktober 11, 2023, 10:08:29Bei Set rs = db.OpenRecordset(strTableName) bleibt der Code stehen:
Fehlermeldung : Laufzeitfehler 13
                Typen unverträglich
Möglicherweise könntest du diesen Fehler beheben, wenn du dein Recordset explizit als DAO.Recordset deklarierst.
Dim rs As DAO.Recordset
Zitat von: KlaSur am Oktober 11, 2023, 10:08:29Der Versuch die Access Importfunktion zu nutzen schlug leider Fehl, der hat nicht mal die Datei gefunden!!
?
Das solltest du mal genauer erläutern bzw. den verwendeten Code herzeigen.

Dein Code von ChatGPT zeigt einen simplen import von Tabulator-getrennten Daten im CSV-Format. - Das kann man zwar theoretisch so machen, aber der ganze Ansatz erscheint schon sehr befremdlich. Du solltest einen richtig guten Grund haben das so zu lösen anstatt den eingebauten Text-Import von Access zu verwenden.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ebs17

ZitatIch habe einen VBA-Code laut Buch abgeschrieben:
...
bei ChatGPt einmal eingestellt. Da hat es sofort ein VBA Code ausgeworfen
Sammelst Du Codes, um sie zu üben und sie irgendwann zu verstehen?
Oder geht es um einen effizienten und zielgerichteten Import?

Im zweiten Fall hätte man bereits eine oder mehrere Tabellen, in die Daten von außen zu importieren wären, weil man in seiner Datenbank einen Plan und darauf aufbauend ein Datenmodell hat.
Im nächsten Schritt würde man sich die Textdatei (Struktur und Daten) anschauen, um einen Plan zu entwickeln, wie man die Daten in die Tabelle(n) seiner DB bekommt.

Mit freundlichem Glück Auf!

Eberhard

KlaSur

Hallo PhilS,
Hallo Eberhard,

wir arbeiten hier mit der Runtime-Version von Access. Ich habe 2010-2011 ein Programm geschrieben was wir noch heute verwenden. Jetzt müssen wir es erweitern und dazu gehört der Import von TXT-Dateien die aus unserem Zeichenprogramm stammen. Wir wollen die Stücklisten in unsere Access Datenbank einfügen in schon vorhandene Tabellen. Dazu muss ich die Daten sehen und sie gezielt in die Tabellen schreiben. Das ist der Plan. Ich suche jetzt nach einer einfachen Möglichkeit um das zu erreichen.

Das ist so eine Datei

Gruß KlaSur

PhilS

Zitat von: KlaSur am Oktober 11, 2023, 14:38:40Dazu muss ich die Daten sehen und sie gezielt in die Tabellen schreiben. Das ist der Plan. Ich suche jetzt nach einer einfachen Möglichkeit um das zu erreichen.
Ein paar Hintergrundinformationen sind immer sinnvoll. Allerdings lese ich in deiner Erläuterung jetzt kein Argument dafür, nicht den eingebauten Text-Import von Access zu verwenden.
Wenn "muss ich die Daten sehen" hier der zentrale Punkt ist, kannst du mittels DoCmd.TranferText die Textdatei auch erstmal nur (vorübergehend) verknüpfen, und dann auf Basis der verknüpften Datei in Access Anfüge- und/oder Aktualisierungsabfragen ausführen, um gezielt zu bestimmen, welche Daten wohin geschrieben werden.

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

Hallo,
ZitatIch suche jetzt nach einer einfachen Möglichkeit
Nutze die Importfunktion von Access, das ist die einfachste Möglichkeit.
Zitat... schlug leider Fehl, der hat nicht mal die Datei gefunden!!
Dann hast Du was falsch gemacht.
Wenn es richtig gemacht wird, wird auch die Datei gefunden, garantiert.
Du musst also mal genau beschreiben, wie Du es versucht hast.

Normalerweise verknüpft man die TXT Datei nur und kann dann gezielt per Anfügeabfragen die Daten in eine (ggf. auch mehrere) Access Tabellen schreiben.

Nachtrag:
Wenn zwei im wesentlichen das Gleiche sagen, solltest Du doch mal darüber nachdenken.  ;D
Gruß Klaus

KlaSur

Jau, gebe ich euch Recht :-[ .
Also ich gehe über den Menupunkt Externe Daten - Neue Datenquelle - aus Datei - txt Datei -
Dateiname - Durchsuchen - P:\3.00-090-A009167_A_Matze.txt  , Importieren Sie die Quelldaten in neue Tabelle , dann Abbruch "Der Assistent kann von ... nicht gefunden werden. Dieser Assistent wurde nicht installiert oder wurde eine falsche Einstellung in der Windows-Registrierung vorgenommen....

Gruß KlaSur

MzKlMu

Hallo,
Neue Datenquelle, wieso ?

Bei mir ist das so:
Externe Daten >> Textdatei

Welche Access Version hast Du ?
Gruß Klaus

ebs17

Zitatwir arbeiten hier mit der Runtime-Version von Access
Zum Programmieren sollte aber eine Vollversion verwendet werden. In der Runtime ist die Entwicklungsumgebung abgeschaltet.
Mit freundlichem Glück Auf!

Eberhard

KlaSur

Morgen MzKlMu,
Morgen ebs17,

ich habe natürlich eine Vollversion. Die Access Version ist:"Microsoft® Access® für Microsoft 365 MSO (Version 2309 Build 16.0.16827.20130) 32 Bit "D:\Ablage\AccessImport.jpg

PhilS

Zitat von: KlaSur am Oktober 11, 2023, 16:12:41Importieren Sie die Quelldaten in neue Tabelle , dann Abbruch "Der Assistent kann von ... nicht gefunden werden. Dieser Assistent wurde nicht installiert oder wurde eine falsche Einstellung in der Windows-Registrierung vorgenommen....
Das interpretiere ich so, dass der Text-Import-Assistent von Access nicht gefunden wird. Dieser Assistent ist nicht für den eigentlichen Import zuständig, sondern nur dafür, die Konfiguration (Import-Spezifikation) für den Import zu erstellen. - Theoretisch könnte man ohne diesen Assistenten auskommen, wenn man manuell die Konfiguration in den entsprechenden Tabellen einträgt. Praktisch ist das aber nicht sinnvoll machbar.

Ich empfehle dir, deine Access Installation zu reparieren oder, falls das nicht hilft, Access zu deinstallieren und dann neu zu installieren.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor