Office: (Office 2010) Csv-Datei mit VBA einlesen und in einer access Tabelle einfügen

Helfe beim Thema Csv-Datei mit VBA einlesen und in einer access Tabelle einfügen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; hallo, ich möchte eine Csv-Datei per VBA in eine Access Tabelle einfügen. Die Csv-Datei besteht aus Runden und Streckenzeiten. Das sind die Werte die... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von zauni, 15. Januar 2016.

  1. zauni Neuer User

    Csv-Datei mit VBA einlesen und in einer access Tabelle einfügen


    hallo, ich möchte eine Csv-Datei per VBA in eine Access Tabelle einfügen. Die Csv-Datei besteht aus Runden und Streckenzeiten.
    Das sind die Werte die in der Csv-Datei stehen ( hier nur ein beispiel):
    1,00;1,01;1,02;1,03;4,06
    2,00;2,01;2,02;2,03;8,06
    die ersten vier Zeiten sind die Rundenzeiten und die letzten die Streckenzeiten.
    aber so ganz will das nicht funktionieren :D Es ist das erste mal das ich mit VBA programmiere. deswegen bitte ich um Verständnis.
    bei mir kommt die ganze Zeit "Fehler beim kompilieren : Erwartet : Datenfeld
    Code:
    Private Sub Befehl22_Click()
    
        Const DatNam = "C:\Users\win_7_64bit\Desktop\techniker\Datenbank\Rennen\Rennen1.csv"
        Const TabNam = "Rennzeiten_Import"
        
        Dim AktDB   As DAO.Database
        Dim ds      As DAO.Recordset
        Dim Zeile   As String
        Dim SZeile  As Date
        Dim SZeile_1  As Date
        Dim IDatNum As Integer
        
        Set AktDB = CurrentDb
        Set ds = AktDB.OpenRecordset(TabNam)
        IDatNum = FreeFile
        Open DatNam For Input As IDatNums
        While Not EOF(IDatNum)              ' bis Dateiende
            Line Input #IDatNum, Zeile      ' Eine Zeile einlesen
            
            SZeile = Split(Zeile, ";")      ' aufsplitten der Ersten Zeile
            SZeile_1 = Split(SZeile(0), " ")   ' hier meckert der immer bei SZeile(0) 
            
            With ds
                .AddNew
                !Runde1 = SZeile_1(0)
                !Runde2 = SZeile_1(1)
                !Runde3 = SZeile_1(2)
                !Runde4 = SZeile_1(3)
                !Streckenzeit = SZeile_1(4)
                .Update
            End With
       Wend
            
    End Sub
    
    die Split funktion hab ich mir aus dem internet gezogen. So wie ich das Verstanden hab, wird beim ersten Split() die Werte in der ersten Zeile per simicolon getrennt werden. Ich weiß aber nicht wofür ich den zweiten Split benötige.
    ich hoffe ihr Könnt mir bei dem Code weiterhelfen. Wenn ihr noch andere Fehler findet bitte direkt schreiben.
    Vielen Dank im voraus.
     
  2. Exl121150 Erfahrener User
    Hallo,

    Code:
    [COLOR="#FF0000"][B]Option Explicit[/B] 'Diese Zeile ist als 1. Zeile jedes Moduls [U]sehr[/U] empfehlenswert - erleichtert die Fehlersuche ungemein![/COLOR]
    Private Sub Befehl22_Click()
    
        Const DatNam = "C:\Users\win_7_64bit\Desktop\techniker\Datenbank\Rennen\Rennen1.csv"
        Const TabNam = "Rennzeiten_Import"
        
        Dim AktDB   As DAO.Database
        Dim ds      As DAO.Recordset
        Dim Zeile   As String
        Dim SZeile[COLOR="#FF0000"]()[/COLOR]  As Date    [COLOR="#0000CD"]'Split(...) benötigt ein dynamisches Array für seine Rückgabewerte[/COLOR]
        Dim SZeile_1[COLOR="#FF0000"]()[/COLOR]  As Date  [COLOR="#0000CD"]'Split(...) benötigt ein dynamisches Array für seine Rückgabewerte[/COLOR]
        Dim IDatNum As Integer
        
        Set AktDB = CurrentDb
        Set ds = AktDB.OpenRecordset(TabNam)
        IDatNum = FreeFile
        Open DatNam For Input As IDatNum  [COLOR="#FF0000"]'Hier ist bei IDatNums das "s" am Schluss zu entfernen![/COLOR]
        While Not EOF(IDatNum)              ' bis Dateiende
            Line Input #IDatNum, Zeile      ' Eine Zeile einlesen
            
            SZeile = Split(Zeile, ";")      ' aufsplitten der Ersten Zeile
            SZeile_1 = Split(SZeile(0), " ")   ' hier meckert der immer bei SZeile(0)[COLOR="#FF0000"], weil du hier ein Array verwendest, aber keines im DIM deklariert hast! [/COLOR]
            
            With ds
                .AddNew
                !Runde1 = SZeile_1(0)
                !Runde2 = SZeile_1(1)
                !Runde3 = SZeile_1(2)
                !Runde4 = SZeile_1(3)
                !Streckenzeit = SZeile_1(4)
                .Update
            End With
       Wend
       [COLOR="#FF0000"]Close #IDatNum   '[U]Muss[/U] gemacht werden, sonst bleibt die Datei geöffnet[/COLOR] 
       [COLOR="#0000CD"]Set ds = Nothing  'Aufräumvorbereitung für Garbage-Collection [U]sollte[/U] gemacht werden[/COLOR]
       [COLOR="#0000CD"]Set AktDB = Nothing[/COLOR]   
    End Sub
    ich verstehe leider nicht wirklich die zentrale Passage deines Codes:

    1) Du liest mittels LINE INPUT... 1 Zeile in die String-Variable Zeile ein.

    2) Dann möchtest du diese Zeile mit Split(Zeile,";") an den Semicola-Stellen aufsplitten und einer dynamischen Array-Variablen SZeile() zuweisen, wobei die einzelnen Array-Elemente vom Datentyp "DATE" sein sollen. Damit das gelingt musst du diese Variable auch als dynamische Array-Variable deklarieren: DIM SZeile() As Date

    3) Jetzt kommt die Zeile, die ich überhaupt nicht verstehe: ein nochmaliges Split(SZeile(0)," "): Das hieße doch, dass du aus dem in der Vorzeile befüllten Array SZeile(0), SZeile(1), ..., SZeile(4), das die 5 Datums/Uhrzeitangaben enthält, das Array-Element SZeile(0) hernimmst, es implizit in einen String verwandelst und darauf nochmals die Split-Funktion anwendest, diesmal jedoch mit dem " "-Zeichen als Trennzeichen, und das Ganze einer weiteren dynamischen Array-Variablen SZeile_1() zuweist.

    4) Ich vermute eher, dass diese Zeile unter 3) entfernt gehört und die Zeilen nach .AddNew entsprechend korrigiert gehören auf
    !Runde1 = SZeile(0)
    ....
    !Streckenzeit = SZeile(4)
     
    Zuletzt bearbeitet: 17. Januar 2016
    Exl121150, 17. Januar 2016
    #2
Thema:

Csv-Datei mit VBA einlesen und in einer access Tabelle einfügen

Die Seite wird geladen...
  1. Csv-Datei mit VBA einlesen und in einer access Tabelle einfügen - Similar Threads - Csv Datei VBA

  2. VBA: csv-Datei schließen, falls geöffnet

    in Microsoft Excel Hilfe
    VBA: csv-Datei schließen, falls geöffnet: Hallo, ich habe in einer Excel 2003-Datei Datensätze in Zeilen angeordnet, die per Makro in eine csv-Datei kopiert werden sollen. Hierzu soll zuerst geprüft werden, ob die csv-Datei (von der...
  3. csv-Datei per VBA importieren

    in Microsoft Access Hilfe
    csv-Datei per VBA importieren: Hallo Zusammen, ich will eine csv in eine bestehende Access-Tabelle einlesen. Die Felder stehen bereits, hab das also schon öfters manuell gemacht, will das aber automatisch machen. Also zuerst...
  4. CSV-Datei über VBA einlesen und über eine Tabelle ausgeben

    in Microsoft Access Hilfe
    CSV-Datei über VBA einlesen und über eine Tabelle ausgeben: hallo, hier seht ihr meinen Code. Ich möchte eine CSV-Datei per Befehl von einem button einlesen und in eine Tabelle schreiben. Die Tabelle soll so aussehen: Spieler, Runde1, Runde2, Runde3,...
  5. VBA Export als CSV Datei

    in Microsoft Access Hilfe
    VBA Export als CSV Datei: Moin, ich habe eine Frage zu ACCESS 2010. ich möchte eine Abfrage als CSV Datei exportiren. Der untere Code funktioniert bei ACCESS 2003 problemlos nur nicht bei ACCESS 2010. Wer kann helfen....
  6. vba csv-Datei in eine bestehende tabelle importieren mit DoCmd.TransferText

    in Microsoft Access Hilfe
    vba csv-Datei in eine bestehende tabelle importieren mit DoCmd.TransferText: Hallo, ich versuche per vba eine csv-Datei in eine bestehende Tabelle zu importieren. Ich habe dazu was aus einem anderen Forum gefunden aber es klappt nicht so wie ich es will. Ich habe dazu eine...
  7. csv-Datei mit VBA öffnen - führende Nullen fehlen

    in Microsoft Excel Hilfe
    csv-Datei mit VBA öffnen - führende Nullen fehlen: Hallo, ich will eine csv Datei die mit Semikolon getrennt ist mit einem Makro öffnen. In dieser csv Datei befinden sich Zellen die mit Nullen beginnen zB.: 0005674;000000934 Wenn ich die Datei mit...
  8. CSV Datei mit VBA einlesen. Semikolon getrennt?

    in Microsoft Excel Hilfe
    CSV Datei mit VBA einlesen. Semikolon getrennt?: Hallo, ich möchte eine CSV Datei mit einem Makro Öffnen. Wenn ich den Vorgang aufzeichen sieht der Code so aus: Workbooks.Open Filename:= _ "C:\Dokumente und...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden