MS-Access ランタイム版でリンクテーブルを実行時に付け直す

 MS-Access ランタイム等でリンクテーブルを実行時に付け直す

既に存在するテーブル一覧から取得して、リンクテーブルのみリンク先を付け直しします
下記は(DataFile)決め打ちですが、ファイルパス定義をテキストファイルにして読み込めば、汎用性が出ます

  1. Public Function ReLinkTable()  
  2.     Dim DataFile As String  
  3.         DataFile = "C:\hoge\datasource.accdb" ' リンク先(データがあるファイル)  
  4.   
  5.     Dim ConnectStr As String  
  6.         ConnectStr = ";DATABASE=" & DataFile  
  7.     Dim Table As DAO.TableDef  
  8.     For Each Table In CurrentDb.TableDefs  
  9.         If Table.Attributes And TableDefAttributeEnum.dbAttachedTable Then ' リンクのみ  
  10.             If (ConnectStr <> Table.Connect) Then  
  11.                 Table.Connect = ConnectStr  
  12.                 Table.RefreshLink  
  13.           
  14.                 ' Debug.Print Table.Name & " => " & Table.Connect  
  15.             End If  
  16.         End If  
  17.     Next  
  18. End Function  
VBAは、なんか辛いw

ODBCの場合、TableDefAttributeEnum.dbAttachedODBC を対象に
Table.Connect に下記のような情報が入っているので、SERVER= のホスト名やIPアドレスを変更することで、同様にリンクを付け直すことが可能です


コメント