Number;Name;Price1;Price2;City
1234;"John Smith";"1,75 EUR";"2,15 EUR";"New Mexico"
3456;"Andy Jahnson";"12,45 EUR";"15,20 EUR";London
3456;"James Bond";"42,34 EUR";"9,20 EUR";Berlin
当我从 Windows 资源管理器中通过 Excel 手动打开此文件时,一切看起来都很好,所有值都正确分隔。看起来像这样:
当我尝试通过 VBA 打开它时,使用
Workbooks.Open fileName:=strPath & "thisFile.csv"
数据用逗号分隔,所以看起来像这样:
当我使用 OpenText 函数时,弹出同样的错误结果
Workbooks.OpenText filename:=strPath & "thisFile.csv", DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False
当我尝试使用
德语格式设置的计算机上使用 Excel 2016 的体验:显然,仅应用分隔符的 Workbooks.Open
选项(
Format
和
Delimiter
)当您打开
.txt
文件时。如果
Local
设置为
False
(默认值),则文件将以 VBA 语言设置打开,并使用逗号作为分隔符。设置
Local:=True
可以防止这种情况发生
Workbooks.Open FileName:=strPath & "thisFile.csv", Local:=True
应该适合你。如果将文件重命名为 .txt
,则可以使用
Format
和
Delimiter
选项:
Workbooks.Open FileName:=strPath & "thisFile.txt", Format:=4 'Format = 4 is semicolon delimited
Workbooks.Open FileName:=strPath & "thisFile.txt", Format:=6, Delimiter:=";" 'Format = 6 is custom delimited
请参阅MSDN了解更多详情
然而,这会弄乱你的十进制数字,请参阅我的编辑。
编辑:我误读了文档。 Format
和
Delimiter
选项实际上仅在使用
.txt
文件时应用,而不是
.csv
(甚至
.OpenText
方法也如此)。如果您想确保它在具有不同格式设置的计算机上打开,我现在唯一的解决方案是将其重命名为
.txt
并使用
Workbooks.OpenText FileName:=strPath & "thisFile.txt", DataType:=xlDelimited, Semicolon:=True, DecimalSeparator:=",", ThousandsSeparator:="."