显然,这个问题已经被问过很多次了,正常程序:Workbooks.Open (ActiveWorkbook.Path & "\Test.csv")
无法正确解析CSV(一个单元格中包含多行)
多亏了Lernkurve,我才能用他的函数把它做对:Opening semicolon delimited CSV file
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
但是这并不快(我有数千列的文件),我的问题是:
是否有任何本地方式打开CSV文件在Excel与正确的解析?
7条答案
按热度按时间xxe27gdn1#
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
+这个的变体不起作用(!)为什么他们甚至有分隔符参数,如果它被本地参数阻止了?!这根本没有意义。但是现在它起作用了。
wecizke32#
这个函数读取一个15MB的CSV文件,并在大约3秒内将其内容复制到一个工作表中。在您的代码中可能花费了大量时间的是,您逐个单元格复制数据,而不是一次放置整个内容。
dbf7pr2w3#
这可能会对你有帮助,也取决于你的
CSV
文件是如何格式化的。1.打开您的Excel工作表,然后进入菜单
Data
〉Import External Data
〉Import Data
。1.选择您的
CSV
文件。1.原始数据类型:选择
Fixed width
,然后选择Next
。1.它会自动分隔您的
columns
。然后,您可以检查Data preview
面板中的拆分列。1.然后
Finish
&参见。注意:你也可以用
Delimited
作为原始数据类型。在这种情况下,你需要键入你的定界符。啊!
rkttyhzu4#
您是否尝试过import text function。
jchrr9hc5#
我也遇到了同样的问题,我无法在Excel中打开CSV文件。我已经找到了一个解决方案,适合我在这个问题Opening a file in excel via Workbooks.OpenText
这个问题帮助我找到了一个适合我的代码,代码大致如下所示:
至少,它帮助我了解了很多可以在
Workbooks.OpenText
方法中使用的参数。w8f9ii696#
有时候,不管设置多少参数,www.example.com的所有解决方案Workbooks.open都不起作用。对我来说,最快的解决方案是在区域和语言设置中更改列表分隔符。区域窗口/附加设置.../列表分隔符。
如果csv没有以正确的方式打开,您可能已经将",“设置为列表分隔符。只需将其更改为”;“而一切都解决了。只是当“一切都对你不利”时最简单的方法:P
yqkkidmi7#
我只是通过如下设置
Workbook.Open
方法中的 Local 参数来解决(我的)问题:每一个信息都在它适当的列中。希望它对你也有效。