Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

CSV Import mit VBA, LF-Zeilenumbrüche entfernen
#1
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ß
Antworten Top
#2
so?

Code:
...
arrTmp = Split(ArrDaten(lngR), cstrDelim)
arrTmp = Replace(arrTmp, vbLf, "")
If UBound(arrTmp) > -1 Then
...
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#3
(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.
Antworten Top
#4
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)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste