dポイントプレゼントキャンペーン実施中!

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

A 回答 (4件)

ランタイムは使ったことないのですが、以下ではどうでしょうか。


(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 のように
    • good
    • 0

http://www.kotaete-net.net/Default.aspx?pgid=14& …

そご参考になさってみてはかがでしょうか?

Shellかなんかで目的のMDBを起動しておいてからGetObjectなどをすればいいのかもしれません。(うろおぼえなので外れかも)

他の方法としては、
(01)「別のmdb」側に、標準モジュールで目的のフォームを開くプロシージャを書く。FunctionかSubかどっちか忘れましたけど、どちらかか、両方か。Docmdなどで普通に開く簡単な1行コードでOKです。このプロシージャをtest01()とします。

(02)「別のmdb」をVBEの画面から「参照設定」でmdbの参照設定を施す。
これで「別のmdb」の標準モジュールのプロシージャを直接Callできるようになります。

(03)呼び出しもとのプロシージャから、
コマンドボタンのクリックイベントで
Call test01()
とでもすれば、呼び出しもとのAccessウィンドウの中で目的のフォームが開きます。

以上、ランタイム環境でやったことはありませんが、もしかしたらできるかもしれません。

※通常mdbを参照設定するときは、汎用(共用)モジュールなどを格納することが多いと思います。のべつまくなしにmdbに参照設定をかけると、ちょっとどうなるのかわかりませんので、たくさんのmdbを参照設定する場合は、実験しながら試してみてください。
    • good
    • 0

#1です



すみません。
読み落としていました。

> そのフォームはMDB起動時に開くフォームとは別のフォーム

mdb オープンでそのフォームは開かれるようなので、
acApp.DoCmd.Close
で閉じてください。

この回答への補足

ありがとうございます!

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

補足日時:2009/02/05 23:19
    • good
    • 0

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すれば、立ち上げた側だけが残ります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A