显然这个问题已被多次提出过.正常程序:
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并正确解析?
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参数?这根本没有意义。但现在可以了。