通过VBA打开csv文件(性能)

Wan*_*ang 11 excel vba

显然这个问题已被多次提出过.正常程序:

Workbooks.Open (ActiveWorkbook.Path & "\Test.csv")

不会正确解析csv(在1个单元格中有很多行)

thx到Lernkurve我可以使用他的功能来做对:打开分号分隔的CSV文件

Sub ImportCSVFile(filepath As String)
Dim line As String
Dim arrayOfElements
Dim linenumber As Integer
Dim elementnumber As Integer
Dim element As Variant

linenumber = 0
elementnumber = 0

Open filepath For Input As #1 ' Open file for input
    Do While Not EOF(1) ' Loop until end of file
        linenumber = linenumber + 1
        Line Input #1, line
        arrayOfElements = Split(line, ";")

        elementnumber = 0
        For Each element In arrayOfElements
            elementnumber = elementnumber + 1
            Cells(linenumber, elementnumber).Value = element
        Next
    Loop
Close #1 ' Close file.
End Sub
Run Code Online (Sandbox Code Playgroud)

然而这并不快(我有数千列的文件),我的问题是:

有没有本地方法在excel中打开csv并正确解析?

Wan*_*ang 7

Workbooks.Open 确实也可以。

Workbooks.Open ActiveWorkbook.Path & "\Temp.csv", Local:=True

这行之有效/是必需的,因为我在德国使用Excel,而excel在默认情况下却使用“,”来分隔.csv,因为我使用的是Windows的英文版。即使您使用下面的代码,excel也会强制使用“,”分隔符。

Workbooks.Open ActiveWorkbook.Path & "\Test.csv", , , 6, , , , , ";"

Workbooks.Open ActiveWorkbook.Path & "\Temp.csv", , , 4+此变量不起作用(!)

如果它们被Local参数阻止,为什么它们甚至还有delimiter参数?这根本没有意义。但现在可以了。