リンクテーブルのリンク先となっているデータベースファイルは、そのテーブルの「TableDef」オブジェクトの「Connect」プロパティを調べることで取得することができます。
ただ、このプロパティには「;DATABASE=」といった文字列も含まれています。
そこでここでは、その文字列とともに、データベースの「ファイル名+拡張子」部分を除外して、「ドライブ+フォルダ名」だけを取り出すサンプルプロシージャを紹介します。
まず、標準モジュール等に次のようなプロシージャを記述します。
Public Function GetLinkDBFolder(strChkTable As String) As String
'リンク先データベースファイルのあるフォルダを取得する
Dim dbs As Database
Dim tdf As TableDef
Dim strFolder As String
Dim intDelm1 As Integer
Dim intDelm2 As Integer
Set dbs = CurrentDb
'引数のリンクテーブルの定義を開く
Set tdf = dbs.TableDefs(strChkTable)
'テーブルのConnectプロパティを解析
strFolder = tdf.Connect
intDelm1 = InStr(strFolder, ";DATABASE=") + Len(";DATABASE=")
intDelm2 = InStrRev(strFolder, "\")
strFolder = Mid$(strFolder, intDelm1, intDelm2 - intDelm1 + 1)
'返り値を設定
GetLinkDBFolder = strFolder
End Function
リンクテーブルについては、そのデータベース内のすべてのテーブルを探索して最初に見つかったリンクテーブルについて「TableDef」を調べるという方法もあります。しかし予期しないテーブルがリンクされているということは考えづらいのと、複数のデータベースファイルのテーブルをリンクしている可能性も考え、チェックするテーブル名は引数としてプログラム上で指定するようにしています。
下図はイミディエイトウィンドウでの実行例です。
 |