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

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ 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"

上記の場合、WScript.Arguments(0)が C:\Test01.xls で、WScript.Arguments(1)が abc となる。

 

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

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。