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


コメント