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