Comment puis-je lier une table d'une base de données MS Access (* .mdb ou * .accdb) à une autre base de données Access dans VBA?
Fondamentalement, je devais simplement utiliser VBA pour répliquer ce que fait l'assistant de données externes.
J'ai googlé cela et je vois de nombreux exemples de mise à jour ou de liaison de tables et de nombreux exemples de liaison à des bases de données SQL, mais très peu de tables de liaison simples entre des bases de données Access.
Vous pouvez utiliser la méthode DoCmd.TransferDatabase pour créer un lien vers une table dans une autre base de données Access.
DoCmd.TransferDatabase TransferType:=acLink, _
DatabaseType:="Microsoft Access", _
DatabaseName:="C:\share\Access\Example Database.accdb", _
ObjectType:=acTable, _
Source:="Addresses", _
Destination:="Addresses_link"
J'ai inclus les noms des options en espérant qu'il serait plus facile de suivre quelle option est laquelle. Mais si cela semble trop verbeux, vous pouvez omettre les noms des options et tout faire sur une seule ligne:
DoCmd.TransferDatabase acLink, "Microsoft Access", "C:\share\Access\Example Database.accdb", acTable , "Addresses", "Addresses_link"
C'est en fait assez simple - vous créez simplement un nouveau tabledef et définissez sa propriété .connect sur une chaîne de connexion ODBC qui relie à l'autre base de données 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
La chaîne de connexion ressemblerait à ceci (extrait de connectionstrings.com ):
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;