高校三年生の合唱祭で何を歌いましたか?

すみません。急いでいます。
マクロ実行中のMDBファイルから、他のMDBのマクロを実行する方法を教えてください。

A 回答 (2件)

急いでいる時ほど説明は正確・詳細のほうが宜しいかと思いますが


取りあえず、こんな風では?

他のMDBファイル名がフルパスで、f:\db_xp\to.mdb
モジュールの中身を
Sub testTo()
  MsgBox "to のtestTo"
End Sub
とします。
ならば
今開いているmdbに下記のように記述すればto.mdb のメッセージ「to のtestTo」が出ます

Sub test()
  Dim acApp As Access.Application
  Set acApp = New Access.Application
  acApp.OpenCurrentDatabase ("f:\db_xp\to.mdb")
  acApp.Run ("testTo")
  'マクロ不可、プロシージャのみ可
  'testToプロシージャの中からDocmd.runMacro "マクロ名"で呼び出し可です
  acApp.CloseCurrentDatabase
  Set acApp = Nothing
End Sub

ただ、testToの内容によっては動かない場合もありえるかと思います。

別案ですが
Startup コマンド ライン オプション を利用して
Shell("msaccess.exe f:\db_xp\to.mdb /x マクロ名")
とすれば、to.mdb が開き『マクロ名』が実行されます。

※実行できるのは、マクロだけでモジュールは不可です。
マクロから実行したいモジュールを指定するなり、マクロの中に、to.mdb の終了処理も
記述するなり工夫して下さい。

※もし、最適化に関する話なら前回のリンク先をよく読めば解決するはずですけど?
    • good
    • 0

直前に「MDBの最適化」を質問されていた件でしょうか?


http://oshiete1.goo.ne.jp/qa2853818.html

他のMDBのマクロを実行することはできないので、以下で「擬似的に」実現させます。

方法:最適化したいMDB(面倒なのでファイルA)、最適化マクロ付きMDB(ファイルB)を用意します。
1)ファイルAには「最適化実行」ボタンを作成しますが、中身は「ファイルBを呼び出し開くコード」「ファイルAを終了させるコード」を書きます。
2)ファイルBには、「ファイルAを指定して最適化するコード」と「最適化後にファイルAを呼び出すコード」と「ファイルBを終了させるコード」を記述します。
3)さらにファイルBには、オプションで「コードの自動実行」を指定しておきます(開かれたらファイルAを最適化し始めるように)

これで、土俵がファイルA(最適化前)からファイルBに移り、ファイルBがファイルAの最適化を実行後してファイルA(最適化済)を開くので、「ファイルAで自身の最適化を実現」に見えます。
    • good
    • 0

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

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


おすすめ情報