この記事では、AccessのマクロからExcelのマクロを実行する方法についてご説明します。
【動画】AccessのマクロからExcelのマクロを実行する実際の動き
本題に入る前に、まずは次の動画をご覧ください。
まずはAccessのマクロがExcelアプリケーションのインスタンスを生成します。
次に、実行したいマクロがあるExcelファイルを参照してそのExcelファイルのマクロを呼び出して実行しています。
マクロ作成の流れ
このConnectionオブジェクトのインスタンスが生成されていないとAccessのマクロがExcelにアクセスすることができないので必ず生成しておきます。
コードの例
Accessのマクロのコード(例)
Option Compare Database Sub test() Dim objExcel As Object 'Excelアプリケーションのインスタンス用オブジェクト変数 Dim excelFile As Object '実行したいマクロがあるExcelファイル用変数 'Excelアプリケーションのインスタンスを生成する Set objExcel = CreateObject("Excel.Application") '実行したいマクロがあるExcelのファイル名をフルパスで取得する Set excelFile = objExcel.Workbooks.Open(Application.CurrentProject.Path & "\" & "work.xlsm") 'Excelのマクロを実行する(モジュール名:sheet_work、マクロ名:test) objExcel.Run excelFile.Name & "!sheet_work.test" 'Excelファイルを保存する excelFile.Save 'Excelを終了する objExcel.Quit '後処理 Set objExcel = Nothing Set excelFile = Nothing End Sub
注目すべきコード①
最初に見て頂きたいのは9行目です。
'Excelアプリケーションのインスタンスを生成する Set objExcel = CreateObject("Excel.Application")
以上のコードは、CreateObjectを使ってExcelアプリケーションのインスタンスを生成するコードです。
このインスタンスを生成することにより、Excelのマクロを呼び出すことができるようになります。
注目すべきコード②
次に見て頂きたいのは12行目です。
'実行したいマクロがあるExcelのファイル名をフルパスで取得する Set excelFile = objExcel.Workbooks.Open(Application.CurrentProject.Path & "\" & "work.xlsm")
以上のコードは、実行したいマクロがあるExcelファイル名をフルパスで取得しているコードです。
Openメソッドに、実行したいマクロがあるExcelファイル名をフルパスを指定して実行しています。
以上でAccessのマクロがExcelのマクロを実行するための前準備が完了しました。
注目すべきコード③
次に見て頂きたいのは15行目です。
'Excelのマクロを実行する(モジュール名:sheet_work、マクロ名:test) objExcel.Run excelFile.Name & "!sheet_work.test"
以上のコードは、AccessのマクロがExcelのマクロを実行するコードです。
ExcelアプリケーションインスタンスのRunメソッドの第1引数に、次の情報を結合させて指定し実行します。
- 実行したいマクロがあるExcelファイル名(フルパスで指定しない)
- !
- モジュール名
- .
- Excelのマクロ名
work.xlsm!sheet_work.test
注目すべきコード④
次に見て頂きたいのは18行目です。
'Excelファイルを保存する excelFile.Save
以上のコードは、実行したいマクロがあるExcelファイルを保存する処理のコードです。
今回サンプルで用意した実行したいマクロがあるExcelファイルは、マクロ実行後にシートの内容を保存したいのでSaveメソッドを実行しています。
注目すべきコード⑤
次に見て頂きたいのは21行目です。
'Excelを終了する objExcel.Quit
以上のコードは、開いたExcelファイルを閉じる処理のコードです。
Quitメソッドを実行しないとExcelファイルが開いたまま残ってしまうので、必ずQuitを実行しておきます。
動作確認
今回はAccess側のマクロから、以下の記事のExcelマクロを呼び出して実行します。
【ExcelVBA】ExcelのマクロからAccessのクエリを実行してデータを取得する方法(ヘッダあり)なおAccess側のマクロから呼び出すのは、「test」というExcelのマクロになります。
実行結果は以上のExcelマクロと同じになります。
マクロ実行前
今回用意したExcelファイルは以下で、セル「aName」に「Q_都道府県取得クエリ」というクエリ名が入力されています。
Accessにあるこの「Q_都道府県取得クエリ」をマクロが呼び出して取得したデータをExcelのシートに出力します。
マクロ実行後
マクロを実行すると、ExcelのシートにAccessのクエリ「Q_都道府県取得クエリ」の実行結果が出力されました。
最後に
本記事では、AccessのマクロからExcelのマクロを実行する方法についてご説明しました。
もしAccessのマクロからExcelのマクロを実行したい場合は本記事を参考にしてみてくださいね。
Excelのスキル向上やExcelの基礎知識をしっかりと学びたいなら
Excelのスキルを習得したい、Excelの基礎知識をもっと理解したい、そう考えているなら「無期限サポート付きExcel講座【すごい改善】」がおすすめです。
Excelのスキルの基礎を身につけるなら【すごい改善】で無期限サポート付きがあるので、これで「Excelのスキルや基礎」を学ぶのにおすすめですよ。