CSV in Arrayeinlesen - Splittingprobleme
24.05.2024 08:30:30
Jan
Leider gibt es Teststrings in der csv Datei mit genau dem Trennzeichen (in dem Fall Semikolon, könnte aber auch jedes beliebige andere sein). Zwar ist dieser Text in meinem Einlesearray (vor der Weiterverarbeitung durch den split) noch in extra Anführungszeichen und lässt sich darüber identifizieren, aber der split legt bei diesen (Ausnahme)Textsstrings weitere Arrayfelder (weil Semikolons im Text) an. Dadurch habe ich manchmal 10 Zeilen und manchmal 13, so dass dieselbe Info an verschiedenen Zeilen im Array steht.
Vorheriges ersetzen der strings via replace nützt natürlich nichts, weil dass ja auch die csv Trennzeichen mit entfernen würde. Ich habe versucht dies über Regex zu lösen. Damit kriege ich die (falschen) Semikolons raus, aber die Performance ist grottig und macht den ganzen Arrayvorteil zunichte.
Habt Ihr eine Idee, wie ich das lösen kann. Öffne ich die csv mit excel schafft excel es sauber zu trennen und lässt die Semikolons im Text unberücksichtigt. Dann müsste es doch auch mit VBA gehen... Hier ein Ausschnitt aus dem Code
Open ThisWorkbook.path & "\" & CSV_Q_Jahr For Binary As #1
strDaten = Space$(LOF(1))
Get #1, , strDaten
Close #1
Vardat = Split(strDaten, vbCrLf)
For lngZeile = LBound(Vardat) To UBound(Vardat)
If Len(Trim(Vardat(lngZeile))) > 0 Then 'check, ob Inhalte in dieser Zeile vorhanden sind (Trim entfernt Leerzeichen)
Vardat(lngZeile) = Replace(Vardat(lngZeile), Chr(34), "") 'Anführungszeichen entfernen
VarErg = Split(Vardat(lngZeile), ";") 'string aufspalten
...
Anzeige