• ベストアンサー

MSアクセスのマクロ・モジュールを実行

MSアクセスのマクロ/モジュールを.batバッチファイル、もしくは.vbsのVBスクリプトでキックさせたいと思っています。 こういった方法は可能でしょうか?ぜひ教えて下さい、よろしくお願いします。

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

  • ベストアンサー
noname#22650
noname#22650
回答No.3

Dim AcApp Set AcApp = CreateObject("Access.Application") AcApp.visible = true AcApp.OpenCurrentDatabase "c:\temp\test.mdb" 'ファイル名 AcApp.DoCmd.RunMacro "マクロ1" 'マクロ名 これでどうでしょう。

fabu
質問者

お礼

皆様ありがとうございます。 こちらでうまく動作しました!!ありがとうございました。 こちらで皆様へのお礼に代えさせてください

その他の回答 (3)

noname#22650
noname#22650
回答No.4

#3です。 モジュールを忘れてました。 モジュールでPublic宣言されたSub又はFunctionを呼び出すのは AcApp.Run "test","引数1",123 ’関数名、引数・・・ こんな感じ。引数も渡せます。 書き忘れてましたがVBScript(.vbs)です。

回答No.2

> やはり、 > 外部スクリプトから > MSアクセス(マクロorVBAコード)を実行したいです。 *.mdb には 2つの側面があります。 A) データ、クエリ、フォーム、レポート、マクロ、VBAコードが入っている「ユーザーが手作業で操作する機能を有するデータベース アプリケーション」という面。 B) データ程度しか入っていない「外部からコントロールされるためのデータベース」 今回の対象にしているデータベースは A に属するのかもしれませんが、「やろうとしていること」は B です。 ですので外部から、外部の機能を使ってコントロールする方法を採用するのが良いと思います。 ただし、マクロによってフォームやレポートを操作したいというのなら別ですが・・・ 機能が増大すればするほど、本流のアプリケーション(ユーザーが画面で操作するためのもの)とサブセット機能は(ある特定の目的のために特定のデータを抜き出したり、横から介入するような機能)はそれぞれ別のツールとして開発する事をお勧めいたします。 なぜかというと、外部からコントロールされるだけの仕組みが *.mdb の中に置かれていると、後々のメンテナンスで後任者が困るからです。 「これって何のためにあるの? mdb の中からは使われてないよね」 って。

回答No.1

外部から Access.exe ならびに *.mdb を起動して *.mdb 内にあるマクロや VBA コードを実行する。 ってこと?(それともマクロだけ?) まぁいずれにせよあまりシンプルじゃないですよね。 マクロの中でやろうとしていることが何なのかにもよりますが、単にデータを更新したり、何らかの形(Excel やテキストファイルかな)で抽出するっていうのなら、Access のマクロで定義せず、VBScript で ADO を使ってデータを処理し、COM を使って Excel を操作したほうが楽かと。

fabu
質問者

お礼

アドバイスありがとうございます。しかし、ごめんなさい。 やはり、 外部スクリプトから MSアクセス(マクロorVBAコード)を実行したいです。

関連するQ&A