#627 リンク先データベースファイルのあるフォルダを取得するには? VBA

リンクテーブルのリンク先となっているデータベースファイルは、そのテーブルの「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」を調べるという方法もあります。しかし予期しないテーブルがリンクされているということは考えづらいのと、複数のデータベースファイルのテーブルをリンクしている可能性も考え、チェックするテーブル名は引数としてプログラム上で指定するようにしています。


下図はイミディエイトウィンドウでの実行例です。
| Index | Prev | Next |



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