#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 リンク先のデータベースファイル名を取得するには?」 |
|||
|
Copyright © T'sWare All rights reserved |