version=1.0.0 vdate=11.01.2016 fname=udf_parsecsvline.bas ns=%NAMESPACE% fpath=/vba/functions ====== [VBA] parseCsvLine() ====== //Zerlegen einer CSV-Zeile in einen String-Array //==Version %%version%% %%vdate%%== {{%%fname%%|Download %%fname%% (V-%%version%%)}} ===== Definition ===== Array = parseCsvLine(line [,delemiter[,quote [,trim]]]) Public Function parseCsvLine( _ ByVal iLine As String, _ Optional ByVal iDelemiter As String = ";", _ Optional ByVal iQuote As String = "'""", _ Optional ByVal iTrim As Boolean = True _ ) As String() ***iDelemiter** Zeile ***iDelemiter** Delemiter für dieFleder: Standars: ; ***iQuote** Textbegrenzungszeichen Standard: ' unn "\\ Einer von beiden. Derjenige der Zuserst kommt, ist für die ganze Zeile gültig\\ Der Wert muss aus einzelnen Zeichen bestehen, di im Pattern in [] gesetzt werden ***iTrim** Flag, ob die Werte getrimmt werden sollen Standard: true ***return** Array ===== Beispiele ===== > Für die Ausgabe der Resultate verwendete ich die Funktion [[:vba:functions:print_r:]]. d parseCsvLine("123;abc;'def;ghi';;;0.12;") ( [0] => '123' [1] => 'abc' [2] => 'def;ghi' [3] => '' [4] => '' [5] => '0.12' [6] => '' ) 'Mit "" als Quote mit Trim d parseCsvLine("""abc;'def' "";0.12") ( [0] => 'abc;'def'' [1] => '0.12' ) 'Mit ' Als Quote und ohne trim d parseCsvLine("'abc;""def ""';0.12",,,false) ( [0] => 'abc;"def "' [1] => '0.12' ) 'Mit dem Setting Delemiter = # Quote = ' d parseCsvLine("12#""abc#def""#'ghi#jk'","#", "'") ( [0] => '12' [1] => '"abc' [2] => 'def"' [3] => 'ghi#jk' ) ===== Code =====