Таблица MS Access Link с VBA

Как я могу связать таблицу из одной базы данных MS Access (*.mdb или *.accdb) к другой базе данных Access в VBA?

в основном я просто должен был использовать VBA для репликации того, что делает мастер внешних данных.

я погуглил это, и я вижу много примеров того, как обновлять или повторно связывать таблицы и многие примеры ссылок на базы данных SQL, но очень мало простых таблиц связи между базами данных Access.

2 ответов


можно использовать DoCmd.Метод TransferDatabase создать ссылку на таблицу в другой базе данных Access.

DoCmd.TransferDatabase TransferType:=acLink, _
        DatabaseType:="Microsoft Access", _
        DatabaseName:="C:\share\Access\Example Database.accdb", _
        ObjectType:=acTable, _
        Source:="Addresses", _
        Destination:="Addresses_link"

Я включил имена опций, надеясь, что это облегчит отслеживание того, какой вариант какой. Но если это кажется слишком подробным, вы можете опустить имена опций и сделать все это в одной строке:

DoCmd.TransferDatabase acLink, "Microsoft Access", "C:\share\Access\Example Database.accdb", acTable , "Addresses", "Addresses_link"

это на самом деле довольно просто-вы просто создаете новый tabledef и устанавливаете его .подключите свойство к строке подключения ODBC, которая связывается с другой базой данных Access.

Private Function LinkTable(LinkedTableName As String, TableToLink As String, connectString As String) As Boolean

    Dim tdf As New dao.TableDef

    On Error GoTo LinkTable_Error

    With CurrentDb

        .TableDefs.Refresh

        Set tdf = .CreateTableDef(LinkedTableName)
        tdf.Connect = connectString
        tdf.SourceTableName = TableToLink
        .TableDefs.Append tdf
        .TableDefs.Refresh


    End With

    Set tdf = Nothing
End Function

строка соединения будет выглядеть примерно так (взято из connectionstrings.com):

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;