如何通过ADO / ODBC访问Excel命名表?

我有一个多张工作簿,并在工作簿中创build命名表(NOT范围)。 为了说明的目的,这些表名是tblA,tblB和tblC。 我无法find通过ADO或ODBC查询这些表的方法。 我可以访问命名的范围,但这不适合我的需要。

谢谢!

我不知道是否可以直接做,但有兴趣看看有没有人回来的工作方法。 ADO的GetSchema集合似乎只能拾取表单名称和命名范围,而不是名为表格的ListObjects。 下面是一个解决方法,但它意味着打开Excel来查找表头/数据范围。 使用ADO或类似的方法几乎是毫无意义的,因为您可以直接复制数据,但是我想您可以在保存为一次性任务之前将其转换为命名范围。

Option Explicit Sub test() Dim WB As Workbook, WS As Worksheet, strExcelfile As String, strSheetName As String Dim strTableName As String, objListObj As ListObject, HeaderRange As String Dim strSQL As String, DataRange As String strExcelfile = "C:\Users\osknows\Desktop\New folder\test.xlsm" strSheetName = "Sheet1" strTableName = "TableName" Set WB = GetObject(strExcelfile) 'Filepath & Filename Set WS = WB.Sheets(strSheetName) 'SheetName Set objListObj = WS.ListObjects(strTableName) 'Table Name 'get range of Table HeaderRange = objListObj.HeaderRowRange.Address DataRange = objListObj.DataBodyRange.Address 'write data directly if required With ThisWorkbook With Sheet1 '.Range(HeaderRange).Value = WS.Range(HeaderRange).Value '.Range(DataRange).Value = WS.Range(DataRange).Value End With End With 'or use ADODB which is a bit pointless now! Dim cnn1 As New ADODB.Connection Dim rst1 As New ADODB.Recordset cnn1.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & strExcelfile & ";" & _ "Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";" strSQL = "SELECT * FROM [" & strSheetName & "$" & Replace(DataRange, "$", "") & "];" rst1.Open strSQL, cnn1, adOpenStatic, adLockReadOnly 'tidy up Set objListObj = Nothing Set WS = Nothing WB.Close Set WB = Nothing End Sub