質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

Q&A

解決済

1回答

16180閲覧

エクセルVBAから複数のACCESSマクロを実行

momodebi

総合スコア13

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Office 365

Office 365は、マイクロソフトが販売している企業向けクラウドベースのグループウエアサービス。電子メールや予定表、Webサイト構築、オンラインストレージ、ビデオ会議などビジネスで必要な機能を備えています。クラウドサービスのため、自社での専用サーバーの設置の必要がないことが特徴です。

0グッド

0クリップ

投稿2020/01/30 01:55

編集2020/01/30 03:22

エクセルVBAからACCESSマクロを実行する際に、
以下のコードのように1つのマクロを実行することが出来るのですが、
1つのマクロを起動⇒2つ目のマクロを起動といったことは出来るのか、
伺いたく質問をさせて頂きました。

#ACCESSマクロを起動 Sub accessマクロ起動() Dim oAcc As Object Dim sPath As String 'MDBパス sPath = "****" 'MDBオープン Set oAcc = CreateObject("Access.Application") Call oAcc.OpenCurrentDatabase(sPath) myMacro = "マクロ1" With oAcc .DoCmd.RunMacro myMacro 'マクロ実行 .CloseCurrentDatabase '閉じる .Qu![イメージ説明](6a1a31311654e97ed2a9e16d486ba286.png) With Set oAcc = Nothing End Sub

イメージ説明

お手数をお掛け致しますが、ご回答の程、よろしくお願いいたします。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

別のマクロの起動は、マクロ名を指定すれば可能です。
ですが連続して実行且つマクの処理が終了してから次のマクロというように制御したいのであれば、DoCmdは非同期実行ですので処理方式を変更する必要があります。

・Access側で実行したいマクロを統合したものを作成しそれを起動。
・Access側Public Functionを用意して、Runメソッドで起動。

他アプリを起動する

Runメソッドの第3引数には、プログラムの実行が終了するまで待つかどうか、をTrue/Falseで指定できます。

Application メソッド (Access)

投稿2020/01/30 02:44

編集2020/01/30 02:45
sazi

総合スコア25300

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momodebi

2020/01/30 03:18

早速回答頂き、ありがとうございます。 当方、初心者のため大変お手数ですが、マクロの統合というのがどのようにやるかが分からない状況です。 調べましたが、分かりませんでした。 お手数をお掛け致しますが、ご教示頂けますと幸いです
momodebi

2020/01/30 03:21

また、 実行且つマクの処理が終了してから次のマクロを実行したいため、その場合はエクセルVBAでの実施は難しいのでしょうか?? 頂いた回答には、ACCESS側でRUNメソッドを行うとの記述がありました故
sazi

2020/01/31 01:47 編集

処理の順序を決めて実行するには、処理の実行の完了を制御する必要があります。 紹介したRunメソッドはその為の引数があります。 エクセルからAccessの処理をRunメソッドで呼び出すのは以下を参考にして下さい。 Excel-VBA-からAccessのマクロ(Mobule内のプロシージャ)を実行するマクロ (http://eprostation.jpn.org/code/vba/vba0007.html)
sazi

2020/01/30 03:46

マクロの統合で一番簡単なのは、新規マクロを作成し、そのマクロ内で既存のマクロを実行するようにします。
momodebi

2020/01/31 00:27 編集

色々とありがとうございます。 何とか複数のマクロは実行できたのですが、 今度は ''' #エクセルVBAのコード Sub access2() Application.ScreenUpdating = False Dim oAcc As Object Dim sPath As String 'MDBパス sPath = "*****" 'MDBオープン Set oAcc = CreateObject("Access.Application") Call oAcc.OpenCurrentDatabase(sPath) With oAcc .Run "実行" .CloseCurrentDatabase '閉じる .Quit End With Set oAcc = Nothing MsgBox "完了しました" End Sub ''' ''' #ACCESS上のコード Public Sub 実行() DoCmd.RunMacro "マクロ1" End Sub ''' とし、マクロ1には複数のマクロを登録しています。 するとエクセルVBAから実行すると、ACCESS上で「runmacro アクションの実行は取り消されました」とのエラーが出てしまいます。 但し、エクセルVBAをかまさず、ACCESSからマクロ1を実行する分にはエラーが出ない状況です。 お知恵を貸していただけますと幸いです...
Y.H.

2020/01/31 00:44

momodebi さん 別の課題/問題は別の質問にされたほうがいいですよ。
momodebi

2020/01/31 01:29

了解しました。 一旦本質問は閉じて別の質問で行います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問