我有一些file.csv
。如果我通過雙擊打開它,它將在Excel中以正確的設置打開(沒有分號,每個「行」數據正確顯示在預期的列中)。使用VBA打開CSV作爲工作表 - 不正確的解析
結果舉例:
然而,在VBA:
'Workbooks.OpenText Filename:=f, StartRow:=2, DataType:=xlDelimited, Semicolon:=True, ConsecutiveDelimiter:=True, TextQualifier:=xlTextQualifierNone
'Workbooks.OpenText Filename:=f, DataType:=xlDelimited, Semicolon:=True
'Workbooks.OpenText Filename:=f, DataType:=xlDelimited
'Workbooks.Open Filename:=f, Format:=xlDelimited, Delimiter:=Chr(34)
'Workbooks.Open Filename:=f, Format:=xlDelimited, Delimiter:=";"
Workbooks.Open Filename:=f, Format:=xlDelimited
Dim s As String
s = """" & ";" & """"
Workbooks.Open Filename:=f, Format:=xlDelimited, Delimiter:=s
'Workbooks.OpenText Filename:=f, DataType:=xlDelimited, OtherChar:=s
'Workbooks.OpenText Filename:=f, DataType:=xlDelimited, OtherChar:=";"
我已經嘗試了上述行(以及其他一些人之前,我開始將我所有的嘗試)作爲以及根本沒有任何爭論,但無論我做什麼,該文件將打開,而不會像在我雙擊該文件時那樣分割文本。
實施例的結果:
因此,在總結;雙擊文件正確解析文件,Open
和OpenText
不會。令人驚訝的是,無論使用Open
還是OpenText
,工作表看起來都是相同的。
在this question中描述了類似的問題,雖然它仍然沒有正確的答案。我們的情況之間的區別是,Excel不會爲我解析任何東西,看起來它似乎解析了OP的大部分文件。
我只想打開工作簿並遍歷其中一列,然後關閉它。我有幾個解決方法,所以我將能夠解決它不必要的迂迴或其他方式。
到目前爲止,我已經找到了這些想法:
- 重命名
.csv
到.txt
和使用OpenText
- 使用
QueryTable
進口 - 遍歷borked文件,因爲它出現使用
OpenText
和使用LEFT
/MID
/RIGHT
以獲得期望的列 - 二進制
Open
和Split
每一行到一個數組
期望答案:
- 如何實現使用
Workbooks.OpenText
或類似機函數該溶液中。 - 關於爲什麼
Workbooks.OpenText
和/或最合適的本機函數類似於它的解釋(甚至可能是想法)在Excel本身似乎無法達到期望的結果時無法實現。 - 其他解決方法。