我的目标是使用 SQL 请求从 csv 文件中获取数据。我已经在之前的 Workbook 中成功了,所以我只在 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 是指向存储文件的文件夹的路径。在运行此行之前创建工作表“会话”,并激活。
这是请求的完整代码:
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 中的连接很陌生,因为它只是我使用它的第二个程序。纠正可能很简单,但我没有找到适合我的情况的有效解决方案。