Beispiel - Datensatz 3 ist falsch umgebrochen:
"Artikelnummer";"HAN";"EAN/Barcode";"Lagerbestand Gesamt";"Artikelname";"Länge";"Breite";"Höhe";"Inhalt/Menge";
"623456789";"";"123456789";"240,00";"Artikel 6";"62,00";"46,00";"40,00";"1";
"723456789";"";"223456789";"2,00";"Artikel 7";"69,00";"32,00";"75,50";"2";
"8freico_BC-SS-
NAVY-6";"";"323456789";"154,00";"Artikel 8";"69,00";"32,00";"75,50";"3";
"923456789";"";"323456789";"154,00";"Artikel 9";"69,00";"32,00";"75,50";"3";
"1023456789";"";"323456789";"154,00";"Artikel 10";"69,00";"32,00";"75,50";"3";
Ich hab das schon zeilenweise gelöst - kein Ding.
Aber ich möchte das performanter machen und auf einen Schlag erledigen. Mir schwebt eine Regex vor, und zwar in diesem Ansatz:
Option Explicit
Public Sub clear_crlf(i_filename As String)
Dim l_content As String
l_content = get_file_as_string(i_filename)
l_content = get_clean_content(l_content)
write_string_as_file i_filename, l_content
End Sub
Private Function get_file_as_string(i_filename As String) As String
Dim f As Long
Dim l_textlaenge As Long
On Error GoTo Fehler
f = FreeFile
Open i_filename For Input As #f
l_textlaenge = LOF(f)
get_file_as_string = Input(l_textlaenge, #f)
Close #f
Exit Function
Fehler:
MsgBox "Datei " & i_filename & " nicht gefunden.", vbCritical + vbOKOnly
End Function
Private Sub write_string_as_file(i_filename As String, i_content As String)
Dim f As Long
Dim l_origfile As String
On Error Resume Next
l_origfile = Left$(i_filename, Len(i_filename) - 4) & "_orig.csv"
Name i_filename As l_origfile
On Error GoTo 0
On Error GoTo Fehler
f = FreeFile
Open i_filename For Output As #f
Print #f, i_content
Close #f
Exit Function
Fehler:
MsgBox "Schreiben der Datei " & i_filename & " gescheitert", vbCritical + vbOKOnly
End Sub
Private Function get_clean_content(i_content As String) As String
' per Regex alle Zeilenumbrüche durch NICHTS ersetzen,
' denen nicht(!) links Anführungszeichen+Semikolon vorausgeht und rechts Anführungszeichen nachfolgt
End Function