我在第8行遇到类型不匹配范围错误。任何人都可以如此友好地解释我做错了什么吗?
由于
Set objExcel = CreateObject("Excel.application")
Set objWorkbook = objExcel.Workbooks.Add()
Set objSheet = objWorkbook.Worksheets.Add
objExcel.Visible = True
objExcel.DisplayAlerts = True
objExcel.Workbooks.Add(1)
With objExcel.ActiveSheet.QueryTables.Add(Connection="TEXT;C:\temp\file.csv", Destination=Range("$A$1"))
'.CommandType = 0
.Name = "test_ITS_ExtractX"
.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 = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 2)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery=False
End With
objExcel.ActiveWorkbook.SaveAs Filename="c:/temp/file.xlsx", FileFormat=xlOpenXMLWorkbook, CreateBackup=False
objExcel.DisplayAlerts = True objExcel.Quit
答案 0 :(得分:2)
...试
With objExcel.ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\temp\file.csv", Destination:=objExcel.ActiveSheet.Range("$A$1"))
希望这有帮助!
答案 1 :(得分:2)
如果您的代码实际上是使用其中一个VBA变体编写的,则应使用:=
而不是=
来指定命名参数。这在运行代码时会生成“类型不匹配”错误。
您还有一个不合格的Range
对象(请参阅answer by Domenic),一旦纠正语法错误,这将导致问题。
所以正确的行应该是:
With objExcel.ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\temp\file.csv", _
Destination:=objExcel.ActiveSheet.Range("$A$1"))
以及之后的一行应
objExcel.ActiveWorkbook.SaveAs Filename:="c:\temp\file.xlsx", _
FileFormat:=xlOpenXMLWorkbook, _
CreateBackup:=False
我刚注意到
.Refresh BackgroundQuery:=False
(注意:请确保xlOpenXMLWorkbook
常量在您运行此应用程序的任何应用程序中都可用。如果没有,您需要自己为其分配正确的值。同样适用于{{1等等。)