この記事では、VBScriptからExcelのマクロのサブルーチンを呼び出す方法についてご説明します。
【動画】VBScriptからExcelのマクロのサブルーチンを呼び出す実際の動き
本題に入る前に、まずは次の動画をご覧ください。
Excelのマクロのサブルーチンを呼び出すVBScriptを実行することで、Excelのマクロのサブルーチンが実行されます。
今回用意したVBScriptが呼び出すExcelのマクロのサブルーチンは、「test」という文字列をテキストファイルに書き出して保存する処理です。
コードの流れ
VBScriptのコード
VBScriptが呼び出すExcelのマクロのサブルーチンの例
今回は次のExcelファイルを用意しました。
このExcelファイルは、VBScriptに呼び出されるマクロのサブルーチンを用意してあります。
Option Explicit Sub WriteTextFile() Dim filePath As String '出力するテキストファイルの場所 '出力するテキストファイルの場所を取得する filePath = ThisWorkbook.Path & "¥test.txt" 'テキストファイルを開く Open filePath For Output As #1 'テキストファイルに「test」の文字列を書き込む Print #1, "test" 'テキストファイルを閉じる Close #1 End Sub
以上のサブルーチンは「WriteTextFile」という名前で、標準モジュール「mdl_test」内に存在しています。Excelファイルの名前は「0001.xlsm」です。
ちなみに「WriteTextFile」では何をやっているのかというと、テキストファイルを生成し、そのテキストファイルに「test」という文字列を書き込んで保存している処理を行っています。
VBScriptから「WriteTextFile」が呼び出されて実行されると、Excelファイルと同じ場所に「test.txt」という名前のテキストファイルが生成されます。
コードの例
Option Explicit Dim objExcel 'Excelアプリケーションオブジェクト用変数 'Excelアプリケーションのオブジェクトを作成する Set objExcel = CreateObject("Excel.Application") 'Excelファイルを開く objExcel.Workbooks.Open("C:\work\10_勉強\16_VBScript\0001\0001.xlsm") '開いたExcelファイルを非表示にする objExcel.Visible = False 'Excelファイルの標準モジュール「mdl_test」のプロシージャ「sample」を実行する objExcel.Run "mdl_test.WriteTextFile" 'Excelを終了する objExcel.Quit '後処理 Set objExcel = Nothing
注目すべきコード①
最初に見て頂きたいのは6行目です。
'Excelアプリケーションのオブジェクトを作成する Set objExcel = CreateObject("Excel.Application")
コードの説明
以上のコードは、Excelアプリケーションのオブジェクトを作成する処理のコードです。
Excelアプリケーションのオブジェクトを作成することで、VBScriptからExcelファイルを開いたり(Openメソッド実行)、サブルーチンを呼び出す(Runメソッド実行)ことができるようになります。
注目すべきコード②
次に見て頂きたいのは9行目です。
'Excelファイルを開く objExcel.Workbooks.Open("C:\work\10_勉強\16_VBScript\0001\0001.xlsm")
コードの説明
以上のコードは、ExcelアプリケーションのオブジェクトがExcelファイルを開く処理のコードです。
Excelファイルを開くことで、VBScriptからExcelファイルのマクロのサブルーチンを呼び出すことができるようになります。
注目すべきコード③
次に見て頂きたいのは15行目です。
'Excelファイルの標準モジュール「mdl_test」のプロシージャ「sample」を実行する objExcel.Run "mdl_test.WriteTextFile"
コードの説明
以上のコードは、開いたExcelファイルのマクロのサブルーチンを呼び出す処理のコードです。
サブルーチンを呼び出すにはExcelアプリケーションのオブジェクトのRunメソッドを実行します。
Runメソッドの引数にはサブルーチンがあるモジュール名と、そのサブルーチン名を指定します。
モジュール名とサブルーチン名は以下のように記述します。
「モジュール名」+「.」+「サブルーチン名」
→モジュール名とサブルーチン名の間に「.」を挟んで記述します。
注目すべきコード④
次に見て頂きたいのは18行目です。
'Excelを終了する objExcel.Quit
コードの説明
以上のコードは、開いていたExcelファイルを閉じる処理です。
サブルーチンが呼び出されたのでQuitメソッドを実行してExcelファイルを閉じます。
動作確認
VBScript実行前
VBScript実行前のフォルダの状態です。
VBScript実行後
VBScript実行すると、「test.txt」が生成されました。
最後に
この記事では、VBScriptからExcelのマクロのサブルーチンを呼び出す方法についてご説明しました。
Excelファイルを開かずにサブルーチンを呼び出す方法の一つに「VBScriptから呼び出す」方法があります。
VBScriptからExcelのマクロのサブルーチンを呼び出したいときは本記事を参考にしてみてくださいね。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。