プロが教えるわが家の防犯対策術!

皆さん宜しくお願いします。

OS起動時に複数のプログラムをbatファイルで起動しようとしています。
で、困っているのが起動順です。

たとえば
起動したいプログラムがエクセル・ワード・パワーポイントとして普通に
start "" "C:\Program Files\Microsoft Office\Office\EXCEL.EXE"
start "" "C:\Program Files\Microsoft Office\Office\WINWORD.EXE"
start "" "C:\Program Files\Microsoft Office\Office\POWERPNT.EXE"
とします。

個々のプログラムの起動時間が違うのでパワーポイント・エクセル・ワードの順で立ち上がり最前面に出ているのがワードになるとします。
しかし一番最初に使いたいのはエクセルなんです。
タスクバーで入替えればいいのですがエクセルが最前面にしておきたいのです。
batファイルの記述で起動するタイミングを遅らせたりすることは可能でしょうか?

A 回答 (2件)

スクリプトの記述場所は、問題ないと思います。



ただし、このスクリプトは、起動時に実行する全てのプログラムの初期処理が終了した後で、実行しなければ意味がありません。
※このスクリプトを実行した後で、他のアプリケーションの初期化が完了すると、そのアプリケーションが最前面にでてしまう可能性がある。

bat ファイルの最後に、このスクリプトが実行されるよう記述位置を変更すると共に、他のアプリケーションの初期化を待ち合わせる意味で、下記のコマンドを、objShell.AppActivate("Microsoft Excel") の直前に追加してみてください。

 WScript.Sleep 5000

なお、上記の "5000" は、待ち合わせる wait 時間(ms)を指定しています。とりあえず、5秒としましたが、これでも短いかもしれないので、実態に合うように調整してください。
    • good
    • 0
この回答へのお礼

できました!
私も色々調べて開始を遅らせる記述をしていたのですが、スペルが間違っていたようです・・・・

ありがとう御座いました

お礼日時:2007/04/11 13:03

お問い合わせになっている状態というのは、システムの起動が完了した時にエクセルのウィンドウがアクティブ状態になっていること、と判断しました。



そのためには、プログラムの起動タイミングを操作しても、難しいと思います。

それよりも、bat ファイルの最後でエクセルのウィンドウをアクティブ状態にしてあげれば良いと思います。

それには、WHS(Windows Script Host) を使います。

WHS の起動方法は、次のように cscript コマンドから スクリプト・ファイルを呼び出します。

 C:\> cscript //NOLOGO Sample.vbs

今回のスクリプトでは、エクセルのウィンドウをアクティブ状態にするので、"Sample.vbs" は以下のような 2行のスクリプトになります。

 ※ Sample.vbs の内容(メモ帳で編集してください。)

set objShell = WScript.CreateObject("WScript.Shell")
objShell.AppActivate("Microsoft Excel")

 注意) 2行目の "Microsoft Excel" 部分は、前面に出したいウィンドウの左上に表示されているキャプション(名前)に合わせてください。
ご自分のシステムで、エクセルを起動させた時のキャプションになるように変更してください。

この回答への補足

ご回答ありがとう御座います。
ならびに返事が遅れましたこと申し訳御座いませんでした。

教えていただいたとおり実行してみましたが
C:\> cscript //NOLOGO Sample.vbsの記述は
エクセルなどを立ち上げるbatファイルに記述すればいいのでしょうか?
全てのプログラムを立ち上げた後コマンドプロンプトにて
sample.vbsを実行してみるとエクセルがアクティブになるのですが、
batファイルにて立ち上げてみるとエクセルがアクティブになりません・・・

記述場所を変えないといけないのでしょうか?

補足日時:2007/04/09 14:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています