※ ChatGPTを利用し、要約された質問です(原文:Excelマクロ戻り値をバッチファイルで取得したい)
Excelマクロ戻り値をバッチファイルで取得する方法
2015/07/14 11:24
このQ&Aのポイント
Excelマクロ戻り値をバッチファイルで取得する方法について教えてください。
Excelマクロからの戻り値をVBスクリプトファイルやバッチファイルで取得する方法が分かりません。
具体的には、Excelマクロmain()の戻り値をVBスクリプトファイルやバッチファイルで利用したいです。どのように記述すればよいでしょうか。
Excelマクロ戻り値をバッチファイルで取得したい
下記のように、Windowsのコマンドプロンプトから
バッチファイル(test.bat)を実行して、
バッチファイルの中から、
VBスクリプトファイル(test.vbs)を実行して、
VBスクリプトファイルの中から、
Excelブック(Book1.xlsm)の中の
main()というマクロを実行させていますが、
以下のことがよく分からないので教えてください。
(問1) Excelマクロmain()の戻り値(result)を、
VBスクリプトファイル(test.vbs)の中で
利用したいのですが、Excelマクロからの
戻り値を取得する方法がよく分かりません。
例えば、WScript.Echoでresultの値を表示するには、
どのように記述すればよいのでしょうか。
(問2) Excelマクロmain()の戻り値(result)を、
バッチファイル(test.bat)の中で
利用したいのですが、VBスクリプトからの
戻り値を取得する方法がよく分かりません。
例えば、echoでresultの値を表示するには、
どのように記述すればよいのでしょうか。
よろしくお願いします。
---test.bat---------------------------------------
cscript C:\test\test.vbs /A:"C:\test\Book1.xlsm" /B:"main"
(ここでechoなどでresultの値を表示したい)
--------------------------------------------------
---test.vbs---------------------------------------
Dim oApp
Set oApp = CreateObject("Excel.Application")
oApp.Visible = False
Set objParm = WScript.Arguments.Named
oApp.Workbooks.Open objParm("A")
oApp.Run objParm("B")
oApp.DisplayAlerts = False
oApp.Quit
oApp.DisplayAlerts = True
(ここでWScript.Echoなどでresultの値を表示したい)
--------------------------------------------------
---Main() (Excelマクロ)---------------------------
Function main() As Integer
(処理)
main=result
End Function
--------------------------------------------------
質問の原文を閉じる
質問の原文を表示する
お礼
教えていただきました方法で、 Excelマクロの戻り値をVBスクリプトで取得することができました。 また、WScript.Quit()とerrorlevelを使うことで、 VBスクリプトの戻り値をバッチファイルで取得することができることが分かりました。 ありがとうございました。 ---test.bat--------------------------------------- cscript test.vbs /A:"C:\test\Book1.xlsm" /B:"main" @echo %errorlevel% -------------------------------------------------- ---test.vbs--------------------------------------- Dim oApp Dim myStr Set oApp = CreateObject("Excel.Application") oApp.Visible = False Set objParm = WScript.Arguments.Named oApp.Workbooks.Open objParm("A") myStr=oApp.Run(objParm("B")) oApp.DisplayAlerts = False oApp.Quit oApp.DisplayAlerts = True WScript.Quit(myStr) --------------------------------------------------