我正在使用下面的VBA代碼在Excel中打開一個csv文件(代碼模擬Data \ Text to Columns - 命令)。在代碼中,需要爲屬性TextFileColumnDataTypes指定一個數組,這對於csv文件中的每一列都指定了數據格式(2 =文本格式)。使用TextFileColumnDataTypes以正確的數據格式爲每列打開CSV文件?
但是,由於我不知道csv文件有多少列,因此我想爲csv文件中的所有列指定格式2(=文本格式)。現在的問題是,我只能爲固定數量的列指定數據格式(在下面的例子中是3列)。
任何幫助解決這一問題的高度讚賞:)
=============================== ================
下面是完整的代碼我使用:
With ThisWorkbook.Worksheets(1).QueryTables.Add(Connection:= _
"TEXT;C:\test.csv", Destination _
:=ThisWorkbook.Worksheets(1).Range("$A$1"))
.name = "Query Table from Csv"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2, 2)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
.Delete
End With
Thx詳細說明!關於第二種解決方案,就我所見,基本上只刪除了關於逗號和千位分隔符的兩行,並將屬性TextFilePlatform更改爲1252.但是,此代碼對我無效。例如。它將「03/08/2012」轉換爲日期。關於第一種解決方案,讀出符合要求的列數。感謝你的代碼!然而,我想知道是否有更自然的解決方案來填充存儲在屬性TextFileColumnDataTypes中的信息,然後給出一個固定長度的數組...... – tyrex 2012-04-23 07:34:47