• 締切済み

Accessでリンクテーブルのパス変更

Accessで処理mdbとデータmdbに分けて、データmdbをリンクテーブルとして読み込んでいるのですが、データmdbのパスが変わったとき、処理mdbでデータmdbのパスを変更しなければなりません。 それが、面倒なので、手軽に変更できるように作っているのですが、「MSysObjects」の「Database」を書き換えるようと、VBAでADODB処理をしているのですが、アップデートすると「更新可能なクエリであることが必要です。」となり、書き換えることが出来ません。 strSQL = "SELECT * FROM MSysObjects;" ~ data.open strSQL ~ data("Database") = NewDatabase data.Update といった感じの処理です。因みに環境はAccess2000です。 何か、リンクテーブルを自動で書き換える簡単な方法は無いものでしょうか。

みんなの回答

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

'DAO3.x の参照設定が必要です。 Dim dbs As DAO.Database Dim tdf As DAO.TableDef Set dbs = CurrentDb For Each tdf In dbs.Tabledefs   If Len(tdf.Connect > 0 Then     tdf.Connect=";DATABASE=" & strPath '新mdbのフルパス     tdf.RefreshLink   End If Next

o_teu
質問者

お礼

bonaronさん早速の回答ありがとうございました。 外部的に処理をしたかったので、コモンダイアログなんかで、mdbを開いたて、そのmdbのリンクファイルを指定したPathに変更するというようなことをしたかったのですが、外部mdbからMSysObjectsを変更することは出来ないようですね。(他に方法があるかもしれませんが) CurrentDbだと、自分のMSysObjectsを見に行くので、希望通りの処理は出来ないようです。 それぞれのmdbに上記のような処理をさせていくことで対応したいと思います。 ありがとうございました。