我的目标是使用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中的连接很新,因为它只是我使用它的第二个程序。这可能很容易纠正,但我没有为我的案例找到一个有效的解决方案。
答案 0 :(得分:0)
问题来自“Option base 1”和录音机使用的阵列。保持选项并修改代码以避免数组工作,以及删除“Option Base 1”。