VBAからコンソールアプリをウィンドウ非表示で実行する方法

http://blog.onpu-tamago.net/entry/20101020/1287578266
WSHやVBAからWshShell.exeを使ってコンソールアプリを実行する場合、コンソールが表示されてしまいます。
そのための代替案として、WshShell.Runメソッドでcmd.exeを起動し、そのリダイレクト出力されたファイルを読んで処理する という方法が下記ページにて紹介されています。

WScript.ShellのExec()で、コンソールアプリを非表示で実行するラッパー
http://scripting.cocolog-nifty.com/blog/2008/08/wscriptshellexe_7621.html

ただ、上記サイトのコードでは、呼び出し先プログラム実行中は標準出力のリダイレクト用に作成したファイルに追記書き込みできないことを利用してアプリの終了待ちを実現しています。
ただ、この場合常時標準出力にデータを出力しているアプリを呼び出した場合問題はないのですが、もし呼び出し先アプリが一時的に標準出力への出力をやめてしまった場合、リダイレクトしているテキストファイルが追記可能になってしまい、呼び出し先プログラムが終了したと見なされる場合があります。
ちゃんと呼び出し先プログラムの終了を待つには、やはりプロセスを監視するなど別の方法をとった方がいいかも。

 

よかったらシェアしてね!

この記事を書いた人

コメント

コメントする

目次
閉じる