- ベストアンサー
DOS画面起動時のパチパチを防ぐ方法とは?
- VBAからDOSコマンドを起動した時、画面が一瞬パチパチしてしまうことがあります。このパチパチを防ぐ方法はあるのでしょうか?
- 以下のコードは、C: est配下のCSVファイルを1つにまとめ、C: estにall.txtとして保存するものです。その際、DOSコマンドが使用されました。
- VBAからDOSコマンドを使用すると、画面が一瞬パチパチすることがあります。このパチパチを防ぐ方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
もう少し↓を読み込もう! http://msdn.microsoft.com/ja-jp/library/Cc364421 ----引用はじめ---- object.Run(strCommand, [intWindowStyle], [bWaitOnReturn]) (省略) bWaitOnReturn 省略可能です。スクリプト内の次のステートメントに進まずにプログラムの実行が終了するまでスクリプトを待機させるかどうかを示すブール値です。bWaitOnReturn に TRUE を指定すると、プログラムの実行が終了するまでスクリプトの実行は中断され、Run メソッドはアプリケーションから返される任意のエラー コードを返します。bWaitOnReturn に FALSE を指定すると、プログラムが開始すると Run メソッドは即座に復帰して自動的に 0 を返します (これをエラー コードとして解釈しないでください)。 ----引用おわり---- Run メソッドから strCommand の Exit ステータスを得るには bWaitOnReturn に TRUE を指定する。 このときは strCommand の終了を待つから下のループは不要だよ! | Do While Status <> 0 | Loop
その他の回答 (2)
- dscripty
- ベストアンサー率51% (166/325)
> Set wExec = WSH.Run("%ComSpec% /c " & Cmd) wExec = WSH.Run("%ComSpec% /c " & Cmd) 理由だけど、 WScript.Shell.Run が『オブジェクト』じゃなくて 『Exit ステータスの数値』を返すから。 (引用) http://msdn.microsoft.com/ja-jp/library/Cc364421 | 解説 | Run メソッドは整数を返します。…… うまくいくといいね!
お礼
回答ありがとうございました。 下記コードでパチパチがなくなりました。 因みにstatusの判断は、下記でよろしいですか? Do While Status <> 0 Loop Set WSH = CreateObject("Wscript.Shell") Cmd = "COPY C:\kamakura\*.csv C:\kamakura\all.txt" Status = WSH.Run("%ComSpec% /c " & Cmd, 6) Do While Status <> 0 Loop
- dscripty
- ベストアンサー率51% (166/325)
パチパチは、VBA を走らせているウインドウと %ComSpec% のウィンドウがアクティベート合戦してるからだとおもうけど、 DoEvents もウィンドウメッセージを処理するから、少しは動きがちょっとはあるかもね。 そもそも、Exit ステータスをもらうだけなら WScript.Shell.Exec じゃなくて WScript.Shell.Run でもできるから、こっちがいいかも。 パックグラウンドでも処理できるから、ウィンドウのパチパチも関係なくなるよ。 http://okwave.jp/qa/q1242774.html http://msdn.microsoft.com/ja-jp/library/Cc364421
お礼
早々と回答していただきありがとうございました。 Set WSH = CreateObject("Wscript.Shell") Cmd = "COPY C:\kamakura\*.csv C:\kamakura\all.txt" Set wExec = WSH.Run("%ComSpec% /c " & Cmd) と変更し実行したところ、 「オブジェクトが必要です。」というメッセージが表示されました。 正しいコードを教えて下さい。
お礼
大変良くわかりました。 ありがとうございました。