- 締切済み
コマンドプロンプトについて
バッチファイルで自動でエクセル起動して何秒後に終了、次のファイル起動・・・・ としたいのですがわかりません。 宜しくお願い致します。 @echo off "C:\Program Files (x86)\Microsoft Office\OFFICE11\excel.exe" "d:\2.xls" timer 10 SET PID= for /F "usebackqtokens=2" %%i in (`tasklist /nh /fi "Imagename eq excel.exe"`) do SET PID=%%i IF defined PID ( taskkill /PID %PID% ) "C:\Program Files (x86)\Microsoft Office\OFFICE11\excel.exe" "d:\3.xls" これをXPとWIN7で動かしたい。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- RURUFOU
- ベストアンサー率55% (5/9)
行いたい事は 「D:¥2.XLS」を起動して 10秒待って エクセルを強制終了させて 「D:¥3.XLS」を起動 でよろしいでしょうか? --- ここから ---- @echo off rundll32.exe shell32.dll,ShellExec_RunDLL excel.exe "d:\2.xls" PING LOCALHOST -n 10 > NUL SET PID= for /F "usebackqtokens=2" %%i in (`tasklist /nh /fi "Imagename eq excel.exe"`) do SET PID=%%i IF defined PID ( taskkill /PID %PID% ) rundll32.exe shell32.dll,ShellExec_RunDLL excel.exe "d:\3.xls" --- ここまで ---- でいけると思います。 WIN7(32ビットHOME)で動作確認しました。 「10秒待つ」は、PINGコマンドで代用しました。 "C:\Program Files (x86)\Microsoft Office\OFFICE11\excel.exe" "d:\2.xls" で起動すると エクセルを閉じるまでバッチが待っているので、うまく動きません。 それとXPと7で動かしたいとのことでしたので、 エクセルのバージョンの違いに左右されないように、 ここを参考に起動バッチを組みました。 http://scripting.cocolog-nifty.com/blog/2012/04/index.html 他の回答者の方も懸念されているように 32ビットと64ビット、エディションの違いでも環境が変わって 動かない場合がありますのでご注意を。
- INTLINSIDE
- ベストアンサー率42% (383/907)
taskkill は成功しているんでしょうか。 Home 版には無いんですが、その辺は大丈夫でしょうか。 バッチファイルだと sleep もないんで、作るか何かを流用するかしないといけないので、あんまりそーいう用途には向かないかと思います。 windows scripting host はご存知でしょうか。 せっかくWindowsなんですし、そっちでやったほうが多分・・・簡単です。 まあ・・・powershell の世の中ですが、WSHもまだまだいけるかと・・・。 option explicit dim excel set excel = CreateObject("Excel.Application") excel.Visible=true excel.Workbooks.Open "d:\2.xls" wscript.Sleep( 10 * 1000) excel.WorkBooks.Close excel.Workbooks.Open "d:\3.xls" wscript.Sleep( 10 * 1000) excel.WorkBooks.Close excel.Quit set excel = Nothing メモ帳にコピーして test.vbs と名前を付けて保存。 XP の場合 WSHが無ければインストールしてください。 たぶん最初から入っているとは思う。 http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/install.htm (ちなみに wscript.Sleep は 1000ミリ秒単位で指定なので 秒数を指定したい場合は上記の例にあるように1000倍してください) (また、いちいち、excel ごと終了させたい場合は、excel.Quit もCloseの後に呼び出してください)
お礼
有り難う御座いました。 Home 版です。 >windows scripting host はご存知でしょうか。 は知らなかったです、初心者ですみません。
- Cupper-2
- ベストアンサー率29% (1342/4565)
いや、そもそもバッチファイルから起動しようが、 その起動されたアプリケーションの終了は アプリケーション側で行わなければならないよ? 勝手に終了するアプリケーションならいざ知らず Excelは勝手に終了しませんから Excel内でマクロを使って終了させる方法を試みてください。 んーと、あと 質問者さんが使用しているWindows XP は64ビット版ですか? 32ビット版なら Program Files のフォルダ名が異なることに注意してください。 verコマンドで使用しているOS(に組み込まれている コマンドプロンプト)のバーションが分かります。 うまいこと分岐させてください。 コマンドプロンプト内でウェイト時間を取りたいのでしたら pingコマンドをループバックアドレス(127.0.0.1)に対して行うか timeコマンドの出力から読み取るようにしましょう。 pingコマンドはほぼ一定の時間のウェイトに使用することができます。 工夫してみてください。
お礼
有り難う御座いました。 エクセルマクロを再構築しました。
お礼
有り難う御座いました。 64ビット版でexcelが2003バージョンでした、書くの忘れてましたすみません。 とても参考になり大変ありがたいです。