2016-10-06 159 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:="." 
相關問題