使用 VBA 导入分号分隔的 CSV 文件

问题描述 投票:0回答:2
我在通过 VBA 代码使用 Excel 打开 .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 手动打开此文件时,一切看起来都很好,所有值都正确分隔。看起来像这样:

当我尝试通过 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

当我尝试使用

此线程中的解决方案时。有什么想法吗?

vba excel csv
2个回答
18
投票
我希望您使用的是比 Excel 2000 更新的版本。这是我在具有

德语格式设置的计算机上使用 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:="."
    

-1
投票
Local:=True 完美运行!即使打开 .csv 文件,谢谢!!

© www.soinside.com 2019 - 2024. All rights reserved.