Access2013 VBA 別データベースのプロシージャの呼び出し方… Access2013 VBA 別データベースのプロシージャの呼び出し方を 教えてほしいのですが

補足

あと、プロジェクト名を追加して試しましたが "MyProject.testB" だけエラーが出ずに "MyProject.Module2.testB"、"MyProject.Module1.testA"、"MyProject.Module2.testA" はすべてエラーでした。

Microsoft Access | プログラミング128閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

1

1人がナイス!しています

ThanksImg質問者からのお礼コメント

もともと参照設定で作成しており、 きちんと動作はしていたのですが 社内配布にあたり なんとなく参照設定でない方が良いかなぁと思い 変更することにしたのですが 壁にぶち当たってしまいました。 先にも書きましたが 同名のプロシージャが無ければ何とかなるので そちらで対応する予定です。 ほかにも怪しそうな点があるので ぶつかったら参照設定に戻して対応します。 ありがとうございました。

お礼日時:5/6 21:46

その他の回答(3件)

0

自分もよくわかってないのですみませんが、 呼び出したいaccdbやmdbの 呼び出したいプロシージャがSubだと、その前に、 「Public」を追記しないとエラーになったような気がします。 (フォームなどのイベントプロシージャを呼び出したいときも同じ。Subなので。) 基本的に、 標準モジュールのプロシージャを呼び出す場合と フォームなどのイベントプロシージャを呼び出す場合とで、 少し方法が異なった気がします。 以下は、 D:\1\A.accdb の 標準モジュールに「Public Sub test01()」というプロシージャがあり、 また、 「t01main」というフォーム上の「コマンド14」ボタンのクリックイベントに「Public Sub コマンド14_Click()」というプロシージャがある場合の 両者の呼び出し方です。 =============== Sub testA() Dim acApp As Access.Application Set acApp = New Access.Application With acApp .OpenCurrentDatabase "D:\1\A.accdb" .Visible = True '念のため .Application.Run "test01" '↑標準モジュールを呼び出す場合 '↑Runで呼び出す。 .DoCmd.OpenForm "t01main" .Forms("t01main").コマンド14_Click '↑フォームなどのイベントプロシージャを呼び出す場合。 '↑フォームを開いて普通に呼び出す。 '↑「Click」のあとにはカッコはつけない。 '↑上記は「A.accdb」の「t01main」フォームを開いて '↑そのフォーム上の「コマンド14」ボタンのクリックイベントを動かす例。 '↑つまり、(実際には押してないけど)「コマンド14」ボタンを '↑「押したことに」する。 '↑=コードの再利用ができる。 .Quit End With Set acApp = Nothing End Sub 既知だったり役に立たなかったらごめんなさい。無視してください。

1

環境が2019なので、参考までに。 dim wAccess as access.Application set wAccess = New access.Application wAccess.OpenCurrentDatabase(外部accdbのフルパス) これで、 wAccess.RUN("プロシージャ名") で、呼び出せました。 呼ばれる側は、publicにしてありますか? Functionだと、戻り値があるので、 戻値の型の変数 = wAccess.RUN("プロシージャ名") と呼ばないとエラーになったかもしれません。

1人がナイス!しています