こんにちは。
VB6.0のプログラムをコマンドラインから呼び出す場合は
プログラム内において、Command関数でパラメータが取得できました。
しかし、エクセルのVBAではパラメータが取得できません。
たとえば
C:\>test.xls param1
とやって、プログラム内には
if Command = "" then
msgbox "no parameter"
else
msgbox Command
end if
としても、必ず"no parameter"が表示されます。
基本的に、VBA では Command関数は機能しない事になっています。
ヘルプにも、そのように書かれていますよね。
Accessのように、/cmd オプションでコマンドライン指定可能な物も
ありますが、少なくともExcelでは使えないようです。
ありがとうございます。
ということは、Excelでは起動パラメータにファイル名を
渡し、プログラムで開くという風にするには
みなさんはどうされているのでしょうか?
C:\>test.xls param1
の
test.xls だけエクセルに渡ってると思いますよ。
そうでなのですか
commandメソッドではなにも受け取れないです。
また、param1を受け取れないと意味がありません
excelのパラメータで定義されているのは、ブック名以外では
「/r」「/e」「/p」「/safe」パラメータぐらいしか無いようですね。
> 起動パラメータにファイル名を渡し
Excel.exe に xlsファイルの名前を渡す、という意味なら可能ですね。
『Excel.exe C:\Book1.xls』だけでいけますし。
そうではなく、VBAマクロにファイル名(文字列データ)を渡したいなら、
たとえば、固定のファイル名(たとえば、C:\book1.ini)に、ファイル名の
情報を書いておき、そのファイルの内容を読み取ったりすれば良いかと。
VBスクリプトを作成して呼び出す方法とか
例えばこんな感じ
test.vbsの中身
---------------------------------------------------------
Set args = Wscript.Arguments
For Each c in args
s = s & c & " "
Next
Set objEXCEL = CreateObject("excel.application")
Set objBook = objEXCEL.Workbooks.Open(args.item(0))
objEXCEL.Visible = True
objEXCEL.Workbooks.Application.Caption=s
Set objBook1 = Nothing
Set objEXCEL = Nothing
--------------------------------------------------------
C:\>test.vbs test.xls param1
とやって、プログラム内には
if Application.Caption = "" then
msgbox "no parameter"
else
msgbox Application.Caption
end if
Application.Captionじゃなくてもいいと思うけど
参考まで
そうなのですか・・ありがとうございます。
excelのvbaにファイルを渡し、テキストファイルをエクセルから
読み込みたいのが現状です。
excelを複数起動し、それぞれに対応したそのときに用意される
複数のテキストファイルをよみこませたいので、
パラメータでファイル名を渡したかったのでした。
abc.xlsに対してabc.txtを用意し、エクセルvbaでは自ファイル名から
.xlsを取り除き、.txtを付与し、ファイルを開く、のように
やってみようかなと思います。怖いですが・・・
一つ疑問なんですがDOS窓から
C:\>test.xls
こんな感じにエクセルファイル名を直接実行してExcelが起動しますか?
WinXP + Excel2000では起動しませんが。
すみません、ちゃんと起動されました。
DOS窓からアプリ指定しなくても関連付けられているのが起動するんですね。
ツイート | ![]() |