質問: accessのリンク先を相対パスにしたい access2010をつぎのような環境で開発しています。 c:\開発\データ.accdb テーブル定義と実データ格納 c:\開発\アプリ.accdb データ.accdbのテーブル定義へのリンクとフォームなど これを本番のネットワーク環境 “\\network\本番” に設置した場合、 「c:\開発\データ.accdbは無い」旨のエラーになってしまいます。 また、本番環境のパス名はインストール先によって異なります。 access2010のリンクマネージャでは絶対パスでのリンクしか定義できないようですが、 カレントパスに変更するには、アプリ.accdb を起動時に毎回、動的に変更するしかないのでしょうか? お教えいただきたくお願いいたします。
回答: データ.accdb と アプリ.accdb が同じフォルダ内にあって アプリ.accdb のリンク先を その同じフォルダ内のデータ.accdbに設定するのなら、 vbaになりますが、アプリ.accdb に(例は標準モジュールです) sub relink() dim db as dao.database dim tdf as dao.tabledef dim lnkpath as string dim i as integer lnkpath = currentproject.path set db = currentdb for each tdf in db.tabledefs if len(tdf.connect) <> 0 then tdf.connect = ";database=" & lnkpath & "\データ.accdb" tdf.refreshlink end if next db.tabledefs.refresh end sub というのを一回実行すればリンク先が変更されます。 ただ、アプリ.accdb も共有フォルダ内に置いて、みんなが使うのは、 アプリ.accdb が壊れる可能性が高まる。 アプリ.accdb のデータもネットワークを流れるのでパフォーマンスが良くない。 という点でお勧めできません。 アプリ.accdb は各ユーザーに配布して使ってもらった方が吉。 データ.accdb のバックアップも抜かりなく。