1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| Dim strCheminBd As String
Dim strCheminBd2 As String
Dim strConnect As String
Dim strConnect2 As String
Dim strNomsTables() As String
Dim strTemp As String
Dim i As Integer
Dim oDb As DAO.Database
Dim oDbSource As DAO.Database
Dim oTbl As DAO.TableDef
Dim oTblSource As DAO.TableDef
'Définit mot passe, nom table, chemin base de données
strMotPasse = ""
strCheminBd = "G:\TEST1.mdb"
'Définit la chaine de connexion permettant la liaison des tables
strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=G:\TEST1.mdb"
strConnect2 = "MS Access;pwd=" & strMotPasse & ";DATABASE=G:\TEST3.mdb"
'Instancie l'objet Database de la base courante
Set oDb = DBEngine.OpenDatabase(strCheminBd2, True, True, strConnect2)
'Instancie l'objet Database de la base protégée
Set oDbSource = DBEngine.OpenDatabase(strCheminBd, True, True, strConnect)
'Parcours l'ensemble des tables de la base de données protégée
'et stocke leur nom
For Each oTblSource In oDbSource.TableDefs
'ignore les tables system
If (oTblSource.Attributes And dbSystemObject) = 0 Then
strTemp = strTemp & oTblSource.Name & "|"
End If
Next
'Ferme la base de données sources (impératif pour la liaison)
oDbSource.Close: Set oDbSource = Nothing
'parcours le tableau de noms de tables
strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|")
For i = 0 To UBound(strNomsTables)
'Crée une nouvelle table dans la base de données courante
Set oTbl = oDb.CreateTableDef(strNomsTables(i))
'Lie les deux tables
oTbl.Connect = strConnect
oTbl.SourceTableName = strNomsTables(i)
'Ajoute la table à la base de données
oDb.TableDefs.Append oTbl
Next i
'Rafraichit la liste des tables
oDb.TableDefs.Refresh
End Sub |
Partager