MS-Access ランタイム版でリンクテーブルを実行時に付け直す
MS-Access ランタイム等でリンクテーブルを実行時に付け直す
既に存在するテーブル一覧から取得して、リンクテーブルのみリンク先を付け直しします
下記は(DataFile)決め打ちですが、ファイルパス定義をテキストファイルにして読み込めば、汎用性が出ます
Public Function ReLinkTable()
Dim DataFile As String
DataFile = "C:\hoge\datasource.accdb" ' リンク先(データがあるファイル)
Dim ConnectStr As String
ConnectStr = ";DATABASE=" & DataFile
Dim Table As DAO.TableDef
For Each Table In CurrentDb.TableDefs
If Table.Attributes And TableDefAttributeEnum.dbAttachedTable Then ' リンクのみ
If (ConnectStr <> Table.Connect) Then
Table.Connect = ConnectStr
Table.RefreshLink
' Debug.Print Table.Name & " => " & Table.Connect
End If
End If
Next
End Function
VBAは、なんか辛いw
ODBCの場合、TableDefAttributeEnum.dbAttachedODBC を対象に
Table.Connect に下記のような情報が入っているので、SERVER= のホスト名やIPアドレスを変更することで、同様にリンクを付け直すことが可能です
コメント