- ベストアンサー
Accessのマクロでモジュールを実行させたい。
Access2002を勉強中の初心者です。 AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。 マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。 しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」 根本的に方法が間違っているのでしょうか? アドバイスをよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 ちょっと時間ができたので、Accessのヘルプで、 "RunCode/プロシージャの実行" アクション についてのトピックを見てみました。 結論から言うと、基本的な考え方が間違っているみたいです^^;。 「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。 Subプロシージャではエラーになります。 つまりご質問の件では、 「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。 そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。
その他の回答 (3)
- vantage
- ベストアンサー率60% (310/514)
マクロからプロシージャの実行に関する基本的な考えは間違っていないと思います。 あなたが実行したいプロシージャが、例えば Public Function test() MsgBox "hello!" End Function ならば、マクロの[プロシージャ名]には “ test() ” と、“()”も入力しなければなりません。でないと#2さんのお返事に書かれたエラーになります。 式ビルダも便利ですが、わたしなんかはモジュール画面からコピー&ペーストしてしまいますね、普段は。
お礼
ご回答ありがとうございました。
補足
ご回答ありがとうございます。 おっしゃるとおり()もつけてみたのですが、質問の「・・・含まれていません」のエラーが出ます。 なにか間違えていると思いますので、調べてみます。
- zealzany
- ベストアンサー率35% (19/53)
#1さんと同意見ですが。 文章を読むとモジュール1をプロシージャ名として設定 しているように見えますが、プロシージャ名を指定し てください。 こんなん↓なら プロシージャ aaa です Public Sub aaa() End Sub
お礼
ご回答ありがとうございました。 もっと勉強します。
補足
アドバイスありがとうございます。 おっしゃるとおりやっているつもりなのですが、「指定された式に含まれる名前"aaa"が見つかりません」とのエラーが出ます。なにか、私が考え相違しているのでしょうね...
- happypoint
- ベストアンサー率36% (521/1422)
こんにちは。 フォームから実行するとかだったら、 直接VBAで呼び出した方が早いと思うんですが、 何故マクロ? 的外れだったらすいません。
補足
説明不足ですみません。 既に作成しているマクロの1行として組み入れたいと思ったものですから・・・ 考え方が根本的に外れてますか?
お礼
happypointさん、お忙しいところいつもありがとうございます。Functionプロシージャをまず書かなければならないですね。早速トライしてみます。ありがとうございました。