Hallo Dani,
so klappt es mit der geposteten CSV bei mir. Code in der ersten Sub zur Arbeit mit dem Arrtay ab 'Mach hier was mit dem Array musst halt angepasst werden:
Option Explicit
Sub TxtFileProcessing()
Dim fileName As String
Dim TextArr() As Variant
Dim i As Long
'Name der einzulesenden CSV-Datei inklusive Pfad
fileName = "C:\Desktop\text.txt"
'Array passend zur einzulesenden Datei dimensionieren
ReDim TextArr(GetNumberOfRowsInCsvFile(fileName), 1)
'Neu dimensioniertes Array aus Datei befüllen
Call ArrayAusCsvDatei(fileName, TextArr())
'Mach hier was mit dem Array
'Z.B. alle Punkte in den Werten durch Kommas erstzen, um damit rechnen zu können
For i = 0 To UBound(TextArr)
TextArr(i, 1) = Replace(TextArr(i, 1), ".", ",")
Next i
'Sichtkontrolle
'Anzahl Zeilen im Array und letzte Zeile ausgeben
MsgBox "Anzahl Zeilen: " & UBound(TextArr) & Chr(13) & "Letzte Zeile Bezeichnung: " & TextArr(UBound(TextArr) - 1, 0) & Chr(13) & "Letzte Zeile Wert: " & TextArr(UBound(TextArr) - 1, 1)
End Sub
Private Sub ArrayAusCsvDatei(strDateiName As String, ByRef arrZielArray() As Variant)
Dim i As Long
Dim lngDateiZeile As Long
Dim strZeile As String
Dim arrZeilenElemente() As String
'CSV öffnen
Open strDateiName For Input As #1
'Alle Zeilen durchgehen
Do While Not EOF(1)
'Aktuelle Zeile aus Datei lesen
Line Input #1, strZeile
'Aktuell eingelesene Zeile mit Split() an Freizeichen auftrennen
'und Elemente in das entstehende Array übernehmen
'Anmerkung: Der Standard Delimeter von Split() ist das Freizeichen
'und muss nicht explizit angegeben werden
arrZeilenElemente = Split(strZeile)
'Erstes Element des Splitt-Arrays in erstes Element der
'aktuellen Zeile des Ergebnis-Arrays schreiben und
arrZielArray(lngDateiZeile, 0) = arrZeilenElemente(0)
'Letztes Element des Splitt-Arrays in zweites Element der
'aktuellen Zeile des Ergebnis-Arrays schreiben
arrZielArray(lngDateiZeile, 1) = arrZeilenElemente(UBound(arrZeilenElemente))
'Zeilenzähler inkrementieren
lngDateiZeile = lngDateiZeile + 1
Loop
Close #1
End Sub
Public Function GetNumberOfRowsInCsvFile(ByVal strFile As String) As Long
'Uwe Fabig - 13.02.2013, 11:30
'Quelle: https://www.xing.com/communities/posts/anzahl-zeilen-einer-textdatei-ermitteln-1002110449
Dim fso As Object
Dim ts As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile(strFile)
ts.ReadAll
GetNumberOfRowsInCsvFile = ts.Line
Set fso = Nothing
Set ts = Nothing
End Function
|