Вы уже знаете, как установить соединение ADODB, поскольку у вас это есть в коде Excel.Должно быть в состоянии использовать то же самое в Access VBA.Пример использования раннего связывания, поэтому необходимо установить ссылку на Microsoft ActiveX Data Objects x.x Library
:
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source='C:\Users\June\Sample.accdb'"
rs.Open "SELECT * FROM Table1", cn, adOpenStatic, adLockReadOnly
Ниже приведен пример открытия базы данных DAO и объектов набора записей в рабочем пространстве DAO, который, по-видимому, не поддерживается в Access 2013:
Dim DAOws As DAO.Workspace
Dim DAOdb As DAO.Database
Dim DAOrs As DAO.Recordset
Set DAOws = DBEngine.Workspaces(0)
Set DAOdb = DAOws.OpenDatabase("C:\Users\June\Sample.accdb")
Set DAOrs = DAOdb.OpenRecordset("SELECT * FROM Table1", dbOpenSnapshot)
Пример использования базы данных DAO и объектов набора записей, но не рабочей области:
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = OpenDatabase("C:\Users\June\Sample.accdb")
Set rs = db.OpenRecordset("Table1")
Access VBA может открыть объект набора записей, который извлекает данные из другой базы данных без подключения и других переменных объекта базы данных, используяОбъект CurrentDb и оператор IN.Пример:
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Table1 IN 'C:\Users\June\Sample.accdb'")
Вот тест последнего подхода с использованием SQL с JOIN:
Set rs = CurrentDb.OpenRecordset("SELECT Submit.*, [103].*
FROM Submit INNER JOIN [103] ON Submit.LabNum=[103].LabNum
IN 'C:\Users\June\Sample.accdb'", dbOpenSnapshot)
Любой из этих методов может ссылаться на запрос вместо таблицы в качестве источника.