dポイントプレゼントキャンペーン実施中!

VBAでコマンドプロンプトを実行した後に
ウインドウを閉じないで実行したいのですが

https://oshiete.goo.ne.jp/qa/8931913.html


このページを参考にして

Sub Sample_WShell01()
Dim ShellObj

Set ShellObj = CreateObject("WScript.Shell")

ShellObj.Run "%ComSpec% /c & pause", , True

Set ShellObj = Nothing


End Sub


を実行してみたのですが
一瞬でウインドウが閉じてしまいます。

どうすれば閉じずに実行できますでしょうか?

質問者からの補足コメント

  • ありがとうございます。
    うまくいきました。

    ちなみに、
    ShellObj.Run " pause", , True
    ではなく
    ShellObj.Run "%ComSpec% /c pause", , True
    のように
    "%ComSpec% /c
    を前に挟むのはどういう意味があるのでしょうか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/10/14 15:04

A 回答 (3件)

補足に対して、


ShellObj.Run で実行できるのは拡張子が exe、com、bat、cmd だけです。pauseはpause.exeじゃなくて「コマンドプロンプト」cmd.exeの組み込みコマンドです。
従って、pauseを引数で指定した cmd.exe を起動する必要があります。%ComSpec% には cmd.exe がセットされています。

ShellObj.Run "cmd /c pause",,True

でも同じです。
    • good
    • 0

そのページを読んで何故


ShellObj.Run "%ComSpec% /c & pause", , True
になるのか。
ShellObj.Run "%ComSpec% /c" & "pause", , True
でしょう。
&は文字列連結なので、もちろん
ShellObj.Run "%ComSpec% /c pause", , True
でいいです。
この回答への補足あり
    • good
    • 0

ShellObj.Run "%ComSpec% /c & pause", , Trueの行を


ShellObj.Run "%ComSpec%", , True
としてください。
    • good
    • 0

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

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