У меня есть расположение файла mdb, определенное в диапазоне 1 листа 1. Это значение:возвращает список всех таблиц доступа (.mdb) с макросом excel
«C: \ Users \ User \ Desktop \ test.mdb»
То, что я ищу, чтобы сделать, это создать список всех таблиц в этом файле и вернуть его в Excel. У меня есть частично рабочий сценарий, но он возвращает ненужные элементы
Я отработку этого:
Sub GetTableNames()
Dim cnn As ADODB.Connection
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
Dim lRow As Long
Dim szConnect As String
LastRowSetup = Worksheets("Setup").Cells(Rows.Count, 1).End(xlUp).Row 'last row where table names populate
If LastRowSetup < 10 Then
LastRowSetup = 10 'so we dont accidentally clear important data above this
End If
Sheets("Setup").Range("A10:A" & LastRowSetup & "").ClearContents 'clear old data
fStr = Sheets("Setup").Range("C2").Value 'file location of mdb
szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & fStr & ";"
Set cnn = New ADODB.Connection
cnn.Open szConnect
Set cat = New ADOX.Catalog
Set cat.ActiveConnection = cnn
lRow = 10
For Each tbl In cat.Tables
Sheet1.Cells(lRow, 1).Value = tbl.Name
lRow = lRow + 1
Next tbl
cnn.Close
Set cat = Nothing
Set cnn = Nothing
End Sub
однако она возвращается много дополнительных вещей, которые не имена таблиц. например,
~TMPCLP313341
~TMPCLP74661
Approved_table1
Approved_table2
MSysAccessStorage
MSysAccessXML
MSysACEs
MSysNameMap
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
MSysObjects
MSysQueries
MSysRelationships
Когда я физически открываю mdb, все, что я вижу, это «таблица 1» и «таблица 2». есть способ реализовать дополнительный фильтр в ADODB-соединении, чтобы не возвращать все временные файлы и объекты Msys, или это то, что я просто должен будет фильтровать после импорта.
Обратите внимание, что мне пришлось установить ссылку на Microsoft ADO Ext. 2.X для библиотеки объектов DDL и безопасности, а также для обычной библиотеки объектов ADO .
Используйте .type, чтобы узнать, какой тип таблицы, а не проверен. –
очень простой. спасибо вам доброжелательно – kamelkid2
Добро пожаловать. – Fadi