繁体   English   中英

QueryTables中的VBA类型不匹配错误

[英]VBA type mismatch error in QueryTables

我在第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

尝试...

With objExcel.ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\temp\file.csv", Destination:=objExcel.ActiveSheet.Range("$A$1"))

希望这可以帮助!

如果你的代码实际上是写在VBA变种之一,已命名的参数应该使用指定:= ,而不是只= 当我运行您的代码时,这会生成“类型不匹配”错误。

您还有一个不合格的Range对象(请参阅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常量在您正在其中运行的任何应用程序中均可用。否则,您需要自己为其分配正确的值xlInsertDeleteCells等也将适用此xlInsertDeleteCells 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM