Clever-Excel-Forum

Normale Version: CSV Import mit VBA, LF-Zeilenumbrüche entfernen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin

Ich habe jetzt doch noch ein wenig mit VBA rumgespeilt, bzw ein Skript
gefunden, mit welchem ich CSV Dateien importieren in Excel importieren
kann.


Code:
Sub Datei_Importieren()
 Dim strFileName As String, ArrDaten, arrTmp, lngR As Long, lngLast As Long
 Const cstrDelim As String = ";" 'Trennzeichen
 
 With Application.FileDialog(msoFileDialogFilePicker)
   .AllowMultiSelect = False
   .Title = "Datei wählen"
   .InitialFileName = "C:\Users\Kolja\ownCloud\H26\Finanzen\Unsätze\*.csv"  'Pfad anpassen
   If .Show = -1 Then
     strFileName = .SelectedItems(1)
   End If
 End With
 
 If strFileName <> "" Then
   Application.ScreenUpdating = False
   Open strFileName For Input As #1
   ArrDaten = Split(Input(LOF(1), 1), vbCrLf)
   Close #1
   For lngR = 1 To UBound(ArrDaten)
     arrTmp = Split(ArrDaten(lngR), cstrDelim)
     If UBound(arrTmp) > -1 Then
       With ActiveSheet
         lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
         lngLast = Application.Max(lngLast, 10)
         .Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
           = Application.Transpose(Application.Transpose(arrTmp))
       End With
     End If
   Next lngR
 End If
End Sub

Schon mal ganz cool Smile

Aber das Problem ist, dass die CSV Dateien (auf deren Erstellung ich keinen Einfluss habe) Zeilenumbrüche enthalten.
Diese sind erstmal nicht sichtbar (LF) und die vorsorgliche Ersetzung in einem Editor möchte ich mir ersparen.

Wie kann man die im VBA Script entfernen?

Danke und Gruß
so?

Code:
...
arrTmp = Split(ArrDaten(lngR), cstrDelim)
arrTmp = Replace(arrTmp, vbLf, "")
If UBound(arrTmp) > -1 Then
...
(17.01.2019, 18:42)LuckyJoe schrieb: [ -> ]so?

Code:
...
arrTmp = Split(ArrDaten(lngR), cstrDelim)
arrTmp = Replace(arrTmp, vbLf, "")
If UBound(arrTmp) > -1 Then
...

Leider nicht Sad
Es gibt den Laufzeitfehler Nr 13.
Hallöchen,

Zeilenumbrüche sind in einer csv normal. Ansonsten würde ja alles in einer Zeile stehen…
Ist denn erst mal das ArrDaten korrekt gefüllt und auch ein Array?
In welcher Zeile von den dreien kommt denn der Fehler 13?

Ich würde beim Ersetzen auch die Reihenfolge drehen:

ArrDaten(lngR) = Replace(ArrDaten(lngR), vbLf, "")
arrTmp = Split(ArrDaten(lngR), cstrDelim)