如何将表名称传递给VBA中的sql查询

我正在使用下面的代码从MDB数据库加载到Excel工作表的表。 我试图将表名称定义为variables,并将其传递给查询,但我得到下面的代码错误。 我如何在VBA做到这一点?

 Public Sub ReadMdb() Dim cn As Object, rs As Object Dim intColIndex As Integer Dim DBFullName As String Dim TargetRange As Range DBFullName = Application.GetOpenFilename() On Error GoTo Oops Application.ScreenUpdating = False Set TargetRange = Sheets("Sheet1").Range("A1") Set cn = CreateObject("ADODB.Connection") cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DBFullName Set rs = CreateObject("ADODB.Recordset") Dim tableName As String tableName = "Students" rs.Open "SELECT * FROM tableName", cn, , , adCmdText ' Write the field names For intColIndex = 0 To rs.Fields.Count - 1 TargetRange.Offset(1, intColIndex).Value = rs.Fields(intColIndex).Name Next ' Write recordset TargetRange.Offset(1, 0).CopyFromRecordset rs LetsContinue: Application.ScreenUpdating = True On Error Resume Next rs.Close Set rs = Nothing cn.Close Set cn = Nothing On Error GoTo 0 Exit Sub Oops: MsgBox "Error Description :" & Err.Description & vbCrLf & _ "Error at line :" & Erl & vbCrLf & _ "Error Number :" & Err.Number Resume LetsContinue End Sub 

你可以插入表名到SQL中:

 rs.Open "SELECT * FROM [" & tableName & "]", cn, , , adCmdText 

考虑到你返回的所有行和所有的列,你可以使用命令typesadCmdTable,那么你不需要任何SQL你只需要命名你想要的表。