Excel VBA listobjects.add querytable错误9

时间:2017-09-06 14:54:29

标签: vba excel-vba excelquery excel

我的目标是使用SQL请求从csv文件中获取数据。我已经在之前的工作簿中成功完成了它,所以我复制了它并仅在SQL请求部分修改了它。我在第一行有一个执行错误9,复制代码后没有修改:

ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
    "ODBC;DBQ=" & Path & ";DefaultDir=" & Path & _
    ";Driver={Microsoft Access Text Driver (*.txt, *.csv)};DriverId=27;FIL=text", _
    ";MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;" _
    ), Destination:=ThisWorkbook.Sheets("Sessions").Range("$A$1")).QueryTable

变量Path是到达存储文件的文件夹的路径。表"会话"在此行运行之前创建,a已激活。

这是请求的完整代码:

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
    "ODBC;DBQ=" & Path & ";DefaultDir=" & Path & _
    ";Driver={Microsoft Access Text Driver (*.txt, *.csv)};DriverId=27;FIL=text", _
    ";MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;" _
    ), Destination:=ThisWorkbook.Sheets("Sessions").Range("$A$1")).QueryTable
    .CommandText = Array( _
    Selection & Chr(13) & Chr(10) & "FROM `" & NameFile(1) & "` `" & NameFile(2) & "`" & _
    Chr(13) & Chr(10) & Condition)
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .ListObject.DisplayName = "Session"
    .Refresh BackgroundQuery:=False
End With

我对VBA中的连接很新,因为它只是我使用它的第二个程序。这可能很容易纠正,但我没有为我的案例找到一个有效的解决方案。

1 个答案:

答案 0 :(得分:0)

问题来自“Option base 1”和录音机使用的阵列。保持选项并修改代码以避免数组工作,以及删除“Option Base 1”。