ExcelのVBAではCommandが使えない?


zedan  2004-11-01 16:33:47  No: 86395  IP: [192.*.*.*]

こんにちは。

VB6.0のプログラムをコマンドラインから呼び出す場合は
プログラム内において、Command関数でパラメータが取得できました。
しかし、エクセルのVBAではパラメータが取得できません。

たとえば

C:\>test.xls param1
とやって、プログラム内には
if Command = "" then
 msgbox "no parameter"
else
 msgbox Command
end if

としても、必ず"no parameter"が表示されます。

編集 削除
魔界の仮面弁士  2004-11-01 17:30:35  No: 86396  IP: [192.*.*.*]

基本的に、VBA では Command関数は機能しない事になっています。
ヘルプにも、そのように書かれていますよね。

Accessのように、/cmd オプションでコマンドライン指定可能な物も
ありますが、少なくともExcelでは使えないようです。

編集 削除
zedan  2004-11-01 17:41:32  No: 86397  IP: [192.*.*.*]

ありがとうございます。
ということは、Excelでは起動パラメータにファイル名を
渡し、プログラムで開くという風にするには
みなさんはどうされているのでしょうか?

編集 削除
あん  2004-11-01 17:55:50  No: 86398  IP: [192.*.*.*]

C:\>test.xls param1

test.xls だけエクセルに渡ってると思いますよ。

編集 削除
zedan  2004-11-01 18:00:34  No: 86399  IP: [192.*.*.*]

そうでなのですか
commandメソッドではなにも受け取れないです。
また、param1を受け取れないと意味がありません

編集 削除
魔界の仮面弁士  2004-11-01 18:02:27  No: 86400  IP: [192.*.*.*]

excelのパラメータで定義されているのは、ブック名以外では
「/r」「/e」「/p」「/safe」パラメータぐらいしか無いようですね。

> 起動パラメータにファイル名を渡し

Excel.exe に xlsファイルの名前を渡す、という意味なら可能ですね。
『Excel.exe C:\Book1.xls』だけでいけますし。


そうではなく、VBAマクロにファイル名(文字列データ)を渡したいなら、
たとえば、固定のファイル名(たとえば、C:\book1.ini)に、ファイル名の
情報を書いておき、そのファイルの内容を読み取ったりすれば良いかと。

編集 削除
あん  2004-11-01 18:21:06  No: 86401  IP: [192.*.*.*]

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じゃなくてもいいと思うけど
参考まで

編集 削除
zedan  2004-11-01 18:23:31  No: 86402  IP: [192.*.*.*]

そうなのですか・・ありがとうございます。

excelのvbaにファイルを渡し、テキストファイルをエクセルから
読み込みたいのが現状です。

excelを複数起動し、それぞれに対応したそのときに用意される
複数のテキストファイルをよみこませたいので、
パラメータでファイル名を渡したかったのでした。

abc.xlsに対してabc.txtを用意し、エクセルvbaでは自ファイル名から
.xlsを取り除き、.txtを付与し、ファイルを開く、のように
やってみようかなと思います。怖いですが・・・

編集 削除
ABC  2004-11-01 22:43:19  No: 86403  IP: [192.*.*.*]

一つ疑問なんですがDOS窓から
C:\>test.xls 
こんな感じにエクセルファイル名を直接実行してExcelが起動しますか?
WinXP + Excel2000では起動しませんが。

編集 削除
ABC  2004-11-01 22:46:30  No: 86404  IP: [192.*.*.*]

すみません、ちゃんと起動されました。
DOS窓からアプリ指定しなくても関連付けられているのが起動するんですね。

編集 削除