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アドレスを変更することで、同様にリンクを付け直すことが可能です
コメント