#671 | テーブルのリンク先を外部のDBから変更するには? | VBA | |
VBAのプログラムが記述された自分自身のデータベース内にあるリンクテーブルではなく、他の外部のデータベースファイル内にあるすべてのリンクテーブルについて、しかも複数のデータベースファイルに対して一括してリンク先を切り替えるプログラム例です。 下記の例では、「C:\テスト\」フォルダ内にある3つのデータベースファイルについて、その中のすべてのリンクテーブルのリンク先を「C:\テスト\NewLinkDB.accdb」に切り替えています。 またその際、”3つのデータベースファイル”についてはあらかじめ配列に列挙しています。もしもっとたくさんのデータベースファイルを対象とするのであれば、配列内にその名前を追記します。またもしそれらのデータベースファイルがそれぞれ異なるフォルダにある場合には、共通の「cstrDir」定数として宣言しているパスの文字列も配列内へのそれぞれ異なる記述に書き換えることで対処できます。 Public Sub ReLinkExtDB() Dim dbs As Database Dim tdf As TableDef Dim avarDatabases As Variant Dim iintLoop As Integer Const cstrDir = "C:\テスト\" Const cstrDataDB = "C:\テスト\NewLinkDB.accdb" avarDatabases = Array("サンプル1.accdb", "サンプル2.accdb", "サンプル3.accdb") '3つの外部のデータベースファイルのループ For iintLoop = 0 To UBound(avarDatabases) '1つのデータベースを開く Set dbs = OpenDatabase(cstrDir & avarDatabases(iintLoop)) '全テーブルの探索ループ For Each tdf In dbs.TableDefs With tdf If .Attributes And dbAttachedTable Then 'リンテーブルのみリンク先設定の処理 .Connect = ";DATABASE=" & cstrDataDB .RefreshLink End If End With Next tdf dbs.Close: Set dbs = Nothing Next iintLoop End Sub 実行例:
|
|||
|
Copyright © T'sWare All rights reserved |