當我嘗試導入csv文件時,VBA(1004)中出現了一個非常奇怪的錯誤。VBA錯誤1004 - QueryTable.Add
這裏是我的代碼:
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & ThisWorkbook.Path & "/" & "IJR" & ".csv", Destination _
:=Range("$A$1"))
.Name = "IJR"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlMacintosh
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(3, 9, 9, 9, 9, 9, 1)
.Refresh BackgroundQuery:=False
.UseListObject = False
End With
它給我的錯誤上.Refresh BackgroundQuery:=False
。
IJR.csv IS與我的工作簿位於同一目錄中的文件。我在目錄中有一堆csv文件。奇怪的是,當我將「IJR」更改爲「AA」或「HES」(也是目錄中的csv文件)時,代碼就起作用了。大多數csv文件名不起作用(「USO.csv」,「AAL.csv」,「AAPL.csv」,「HD.csv」等),但是其中一些做到了(到目前爲止僅僅是「AA。 csv「和」HES.csv「)。它們具有相同數量的列的所有相同格式的csv文件。我完全不知所措。也許我犯了一些笨蛋錯誤,但我無法發現它。
另一點有用的信息:我正在運行Excel 2016 for Mac。如果操作系統是Windows,我有一段非常類似的代碼(由於Mac和Windows的VBA代碼的細微差異)。它適用於每個csv文件,沒有問題。該代碼,以供參考,是:
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & ThisWorkbook.Path & "\" & symb & ".csv", Destination _
:=Range("$A$1"))
.Name = symb
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(3, 9, 9, 9, 9, 9, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
更新16年3月10日: 我得到了它在Excel 2011工作的Mac(通過改變「/」的路徑Application.PathSeparator),但它仍然在Excel 2016 for Mac中執行相同的操作。可能只是新Excel中的一個錯誤。
如果相同的代碼工作了一段CSV文件,而不是爲別人,我想這個問題是CSV文件之間存在差異。當你在Excel中打開這些文件時會發生什麼(而不是添加'QueryTable')?他們打開嗎?看起來對嗎? –
他們都打開,看起來正確。再次,Excel 13 for Windows一切正常。只有當我在Mac 16的Excel 16中試用它時,我纔有這個問題。 – chiiidog