小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

VBAでのコマンドライン引数の取得

普通、VBAには、コマンドラインからの引数は渡せません。

しかし、VBSをかますことにより、あたかも、コマンドラインからの引数を渡すことができます。

以下がサンプルです。

要は、VBSでEXCELのシートのセルに引数の値を書き込み、それをVBAで取得するわけです。

かましたVBSのスクリプト

Dim my_name
Dim my_para
Dim xlsApp
Dim bokWork

'コマンドラインの引数の個数チェック    
If WScript.Arguments.Count <> 2 Then WScript.Quit

'ブック名(.xls)取得(コマンドライン第1引数)
my_name = WScript.Arguments(0)

'コマンドラインの引数を取得(コマンドライン第2引数)
my_para = WScript.Arguments(1)

Set xlsApp = WScript.CreateObject("Excel.Application")
xlsApp.Visible = True

Set bokWork = xlsApp.Workbooks.Open(my_name)
bokWork.Worksheets(1).Cells(1, 1).Value = my_para
xlsApp.Run "GetHikisuu"

Set bokWork  = Nothing
Set xlsApp = Nothing
WScript.Quit

引数を受け取る側のVBA

'my_nameで指定するxlsファイルの標準モジュール
Sub GetHikisuu()
    MsgBox Worksheets(1).Cells(1, 1).Value
End Sub

コマンドプロンプトからの引数を指定しての起動

'コマンドラインから引数を指定して実行
WScript.exe GetPara.vbs "C:\Test01.xls" "abc"

尚、本サンプルは、http://www.vbasekai.com/vbscript.html#vbs0004を大変参考にさせて頂きました。