# csv Dateien einlesen



## JulianeRick (31. August 2005)

Hi… 
Bin mit dem Programmieren in Visual basic nicht vertraut…
Sprachen wie C++ Java Matlab… kenn ich aber… Bin also kein absoluter Leihe!

Möchte in Visual basic eine Tabelle einlesen. Die Tabelle ist vom Typ .csv!  Diese Tabelle möchte ich nun Zeilenweise in verschiedene Arrays schreiben. 
Genauer: 
Die erste Spalte der Tabelle soll einem Array A übergeben werden.
Die zweite Spalte der Tabelle soll einem Array B übergeben werden…
Mit der Funktion „open“... wie oftmals gelesen scheint es nicht getan zu sein... Auch der Befehl „input“ scheint falsch zu sein... Programme mit Methoden und mir unbekannten Befehlen konnte ich nicht interpretieren und somit auch nicht zu meinen Zwecken umschreiben...

Folglich lautet meine erste Frage:
Wie programmiere ich das in Visual Basic…

Des Weiteren wäre es nun noch hilfreich zu wissen, wie man die Arrays ausgeben kann.

Ich hoffe jemand kann helfen!


----------



## JensG (31. August 2005)

Hallo Juliane,

eine csv Datei ist ja nix weiter wie eine Ascii Datei wo die Spalten 
durch einen Delemiter getrennt sind.
Du brauchst also ein zweidimensionales Array, wenn ich das richtig
verstehe.

Schau mal ob dir das hilft.


```
Dim f As Integer
    Dim TextZeile As String
    Dim myArray() As String
    Dim mytmpArray() As String
    Dim Rows As Long
    Dim Fields As Integer
    Dim tmpString() As String
    Dim i As Long
    Dim j As Long
    Dim k As Long


    f = FreeFile

    Open "C:\test.txt" For Input As f
        Do While Not EOF(f)
            Line Input #f, TextZeile
            Rows = Rows + 1
            If Rows = 1 Then
               tmpString = Split(TextZeile, ";", , vbTextCompare)
               Fields = UBound(tmpString)
            End If
        Loop
    Close f

    ReDim myArray(Rows, Fields)
    
    f = FreeFile

    Open "C:\test.txt" For Input As f
        Do While Not EOF(f)
            Line Input #f, TextZeile
            
            mytmpArray() = Split(TextZeile, ";", , vbTextCompare)
            i = UBound(mytmpArray())
            For j = 0 To i
               myArray(k, j) = mytmpArray(j)
            Next j
            k = k + 1
        Loop
    Close f
    
    MsgBox myArray(0, 0)
    MsgBox myArray(0, 1)
    MsgBox myArray(1, 0)
    MsgBox myArray(1, 1)
    
     'usw.
```


Jens


----------



## JulianeRick (1. September 2005)

Moin… 
Du kannst nicht erahnen wie froh ich bin, eine Antwort bekommen zu haben!
Zunächst erst Mal vielen vielen Dank… Werde mich jetzt mal daran begeben…
Werde aber noch ein kurzes Statement geben, wenn ich es geschafft habe…
Aber vorab schon mal 1000 Dank


----------



## JulianeRick (5. September 2005)

Hi... 
Besser Spät als nie...
Ich hab’ s geschafft... 
Ich weiß nicht, warum das bei mir nicht auf Anhieb geklappt hat... Jedenfalls hat das Programm mir einen Fehler gemeldet...
Beim genaueren Untersuchen stellte sich heraus, dass etwas bei der Array Übergabe (im zweiten Teil) nicht stimmte... Was kann ich jetzt leider auch nicht mehr sagen... Ich habe so viel an dem Programm herumgedoktert, dass ich nun nicht mehr weiß, wie ich jetzt auf die Lösung gekommen bin... zu meinem Erstaunen hat mir die Tagelange Arbeit ein ähnliches Programm gegeben, wie Du es mir geschickt hast... Ich scheine mich also um Kopf und Kragen geschrieben zu haben um letztendlich etwas gleiches/ähnliches zu bekommen wie Du mir geschickt hast... 
Ich danke Dir für Deine Hilfe… denn ohne Diese hätte ich den Einstieg und das Programm nicht hinbekommen! 

Also folgend das Programm...
----------------------------------------------------------------------------------------------------------------------------------
Sub main()

Dim f As Integer
    Dim TextZeile As String

    Dim mytmpArray() As String
	Dim myArray() As String
    Dim tmpString() As String

Dim n As Integer
Dim p As Integer
Dim A() As String
Dim x As Integer

    f = FreeFile
	n = 0
    Open "C:....Test.csv" For Input As f
        Do While Not EOF(f)
        	Line Input #f, TextZeile
        	tmpString = Split(TextZeile, ";")
            x= UBound(tmpString)
        n = n + 1
    Loop
    Close f


    ReDim Preserve  myArray (n,x)
    f = FreeFile
    n = 0
    Open "C:....Test.csv" For Input As f
        Do While Not EOF(f)

        	Line Input #f, TextZeile
        	tmpString = Split(TextZeile, ";")
            x= UBound(tmpString)-1
        	For i = 0 To x
           		myArray(n,i) = tmpString(i)
        	Next
        n = n + 1

        Loop
    Close f
    MsgBox myArray(0,8)

End Sub


----------

