2016-10-06 200 views
3

我用VBA代码打开带有Excel的.csv文件时出现问题。我有这样的数据组织:使用VBA导入以分号分隔的CSV文件

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 Explorator Excel打开此文件,一切看起来不错,所有值都正确分隔。它看起来像:

Example1

当我尝试通过VBA打开此,使用

Workbooks.Open fileName:=strPath & "thisFile.csv" 

数据是用逗号分隔的,所以它看起来像这样:

Example2

当我使用OpenText功能时弹出相同的错误结果

Workbooks.OpenText filename:=strPath & "thisFile.csv", DataType:=xlDelimited, _ 
     TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ 
     Semicolon:=True, Comma:=False, Space:=False, Other:=False 

当我尝试使用解决方案this thread。有任何想法吗?

+0

您正在使用什么版本的Excel的使用? – arcadeprecinct

回答

6

我希望你正在使用的东西比Excel 2000中更新这是我用Excel 2016年之前的机器上德国格式设置:显然,Workbooks.Open选项分隔符(FormatDelimiter)当您打开只适用一个.txt文件。如果Local设置为False(默认值),则将使用逗号作为分隔符,使用VBA语言设置打开该文件。设置Local:=True将防止这样做

Workbooks.Open FileName:=strPath & "thisFile.csv", Local:=True 

应该为你工作。如果你的文件重命名为.txt,您可以使用FormatDelimiter选项:

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,看到我的编辑。


编辑:我误解的文件。 FormatDelimiter选项实际上仅在使用.txt文件时才适用,而不是.csv(即使.OpenText方法的行为如此)。

如果你想确保它会打开不同格式设置的机器上我现在所拥有的唯一的解决办法是将其重命名为.txt

Workbooks.OpenText Filename:=FileName:=strPath & "thisFile.txt", DataType:=xlDelimited, Semicolon:=True, DecimalSeparator:=",", ThousandsSeparator:="." 
相关问题