#574 リンクテーブルを見つけて再リンクする手順 VBA

Accessでテーブルを扱う場合、外部の共有用のデータベースファイル上のテーブルを”リンクテーブル”として扱うことも多いでしょう。一方、リンクテーブルだけでなく、作業用としてローカルのテーブルもいっしょに使っている場合もあると思います。

そのようなとき、すべてのテーブルを探索して、リンクテーブルだけを指定のデータベースファイル上の”同名”のテーブルと再リンクし直す方法です。

処理としては、全テーブルをループで探索し、それがリンクテーブルだったらそのテーブルの「Connect」プロパティ(テーブルの「説明」プロパティ)の値を書き換えます。

Dim dbs As Database
Dim tdf As TableDef
Const cstrBackDBPath As String = "C:\Data\Database2.accdb"

Set dbs = CurrentDb

'全テーブルの探索ループ
For Each tdf In dbs.TableDefs
  With tdf
    If .Attributes And dbAttachedTable Then
      'リンテーブルのみ処理
      .Connect = ";DATABASE=" & cstrBackDBPath
      .RefreshLink
    End If
  End With
Next tdf


実行例:
■実行前
実行前のテーブルのプロパティシート

■実行後
実行後のテーブルのプロパティシート

※上記はサンプルとしてcstrBackDBPathにリンク先のファイルのパスを定数で指定していますが、プロシージャの引数として受け取ったり、ファイル選択ダイアログなどを併用すれば、より汎用性の高いものになります。

※すでにリンクされているテーブルを探すので、すでにリンクテーブルが存在している必要があります。ない状態で新規にリンクテーブルを設定するものではありません。


関連Tips:
「#111 Connectプロパティを使ったテーブルの再リンク」
「#363 リンク先のデータベースファイル名を取得するには?」
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved