• ベストアンサー

別MDBのフォームを起動

フォームのボタンをクリックしたら、別のMDBファイルのフォームを起動させたいのです。 そのフォームはMDB起動時に開くフォームとは別のフォームです。 さらに前のMDBファイルは閉じたいので、ハイパーリンクはどうだろう…? といったかんじです。 お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3

ランタイムは使ったことないのですが、以下ではどうでしょうか。 (Access を指定しない方法)   Dim acMdb As Object      Set acMdb = GetObject("D:\Hoge\B.mdb")   acMdb.Application.Visible = True   acMdb.Application.UserControl = True      acMdb.Application.DoCmd.OpenForm "フォームB"      Set acMdb = Nothing ※フォームのクローズも acMdb.Application.DoCmd.Close のように

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • gadd3
  • ベストアンサー率46% (211/451)
回答No.4

http://www.kotaete-net.net/Default.aspx?pgid=14&qid=240991864810 そご参考になさってみてはかがでしょうか? Shellかなんかで目的のMDBを起動しておいてからGetObjectなどをすればいいのかもしれません。(うろおぼえなので外れかも) 他の方法としては、 (01)「別のmdb」側に、標準モジュールで目的のフォームを開くプロシージャを書く。FunctionかSubかどっちか忘れましたけど、どちらかか、両方か。Docmdなどで普通に開く簡単な1行コードでOKです。このプロシージャをtest01()とします。 (02)「別のmdb」をVBEの画面から「参照設定」でmdbの参照設定を施す。 これで「別のmdb」の標準モジュールのプロシージャを直接Callできるようになります。 (03)呼び出しもとのプロシージャから、 コマンドボタンのクリックイベントで Call test01() とでもすれば、呼び出しもとのAccessウィンドウの中で目的のフォームが開きます。 以上、ランタイム環境でやったことはありませんが、もしかしたらできるかもしれません。 ※通常mdbを参照設定するときは、汎用(共用)モジュールなどを格納することが多いと思います。のべつまくなしにmdbに参照設定をかけると、ちょっとどうなるのかわかりませんので、たくさんのmdbを参照設定する場合は、実験しながら試してみてください。

すると、全ての回答が全文表示されます。
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

#1です すみません。 読み落としていました。 > そのフォームはMDB起動時に開くフォームとは別のフォーム mdb オープンでそのフォームは開かれるようなので、 acApp.DoCmd.Close で閉じてください。

ajisaika
質問者

補足

ありがとうございます! やった!出来た! と思ったのですが…、 実はこのプログラムはAccessランタイム上で動かすことも有り得るのです。 Access Application となっているからだと思うのですが、ランタイム環境では実行時エラーが出てしまいました(>_<) アクセスでもランタイムでも動くように記述は出来ないでしょうか? 度々申しわけありません。

すると、全ての回答が全文表示されます。
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

Accessをもう一個立ち上げ B.mdbを開き、さらにフォームBを開く例となります。 Dim acApp As Object Set acApp = CreateObject("Access.Application") acApp.OpenCurrentDatabase "D:\Hoge\B.mdb" acApp.Visible = True acApp.UserControl = True acApp.DoCmd.OpenForm "フォームB" Set acApp = Nothing これでAccessは2つ起動されたことになるので、その後で自分をQuitすれば、立ち上げた側だけが残ります。

すると、全ての回答が全文表示されます。

関連するQ&A