Excel では、コマンドラインからワークブックにパラメーターを渡すための標準的な文書化された方法は提供されていません。
ただし、文書化されていない、トリッキーで、やや制限された方法があります。Excel の/e
パラメータの悪用。
BATファイルで、この方法でExcelを呼び出します
start excel "workbook.xls" /e/oneparm/anotherparm/yetanotherparm
次に、workbook.xls ファイルで、関数を使用してコマンドラインにアクセスします。
Declare Function GetCommandLineA Lib "Kernel32" () As String
そして、それを解析するだけです...
Private Sub Workbook_Open()
...
commandline = GetCommandLineA
...
epos = Search("/e", commandline, 1) + 1
p1pos = Search("/", commandline, epos) + 1
onearg = Mid(commandline, epos, p1pos-epos)
p2pos = Search("/", commandline, p1pos)
anotherarg = Mid(commandline, p1pos, p2pos-p1pos)
...
このメソッドは非常に制限されていることに注意してください。パラメーターに空白、スラッシュ、アンパサンド、キャレット、またはその他の予約文字がある場合は機能しません。この制限を克服するには、パラメーターにエンコード方法を実装する必要があります。そのような場合、私は通常urlencodingを使用しますが、他のトリック (空白をアンダースコアまたはプラス記号に置き換える) を使用します。決定はあなた次第です。