Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11043 / 13646 ツリー ←次へ | 前へ→

【18469】コマンドプロンプトの実行結果 モンプチ 04/9/27(月) 15:14 質問[未読]
【18470】Re:コマンドプロンプトの実行結果 禰宜 04/9/27(月) 15:45 回答[未読]
【18471】Re:コマンドプロンプトの実行結果 モンプチ 04/9/27(月) 15:53 お礼[未読]
【18480】Re:コマンドプロンプトの実行結果 Kein 04/9/28(火) 2:01 回答[未読]
【18487】Re:コマンドプロンプトの実行結果 モンプチ 04/9/28(火) 12:30 お礼[未読]

【18469】コマンドプロンプトの実行結果
質問  モンプチ  - 04/9/27(月) 15:14 -

引用なし
パスワード
   皆様、初めての投稿となりますが、よろしく御願い致します。

VBA上から、コマンドプロンプトを実行するため、
>Shell command.com /C (実行文), vbHide
のように書いてます。

実行結果をファイルに出力したいため、
>Shell command.com /C (実行文)>C:\LOG.TXT, vbHide
のように書いてみたのですが、出力されません。

コマンドプロンプト上ではOKです。
もちろん実行自体はできます。

行いたい事としては、以下となります。
・実行結果が「成功」ならば、シートに「○」をつける

そのため、一度ファイルに実行結果を出力し、その内容により判定を行おうとしました。

正しい記述方法、または他の実行結果確認方法があれば伝授ください。
どうか皆様よろしくお願い致します。

【18470】Re:コマンドプロンプトの実行結果
回答  禰宜  - 04/9/27(月) 15:45 -

引用なし
パスワード
   禰宜と申します。

当方はWindowsXP環境ですので、cmd.exeですが、

Shell "cmd.exe /C Ping localhost > C:\LOG.TXT", vbHide

でテキストファイルに出力されております。

ret = Shell("cmd.exe /C Ping localhost > C:\LOG.TXT", vbHide)
などとして、retに0が戻ってくる場合は構文エラーです。

確かめてみてください。

【18471】Re:コマンドプロンプトの実行結果
お礼  モンプチ  - 04/9/27(月) 15:53 -

引用なし
パスワード
   禰宜様、御返答有難う御座います。
問題が解決できました。
深く感謝しております。

確かに、「Cmd.Exe」の場合ですと出力されました。
Shellのエラー時も「0」がきちんと返ってきました。

環境はWindows2000です。
「Command.com」を使用したのは、参考書をそのまま引用したためです。
勉強不足でした。

御迷惑お掛け致しました。


▼禰宜 さん:
>禰宜と申します。
>
>当方はWindowsXP環境ですので、cmd.exeですが、
>
>Shell "cmd.exe /C Ping localhost > C:\LOG.TXT", vbHide
>
>でテキストファイルに出力されております。
>
>ret = Shell("cmd.exe /C Ping localhost > C:\LOG.TXT", vbHide)
>などとして、retに0が戻ってくる場合は構文エラーです。
>
>確かめてみてください。

【18480】Re:コマンドプロンプトの実行結果
回答  Kein  - 04/9/28(火) 2:01 -

引用なし
パスワード
   >他の実行結果確認方法
PING の標準出力結果を、直接変数に入れるなら

Dim WshShell As Object
Dim Result As String

Set WshShell = CreateObject("WScript.Shell")
Result = WshShell.Exec("PING 192.168.123.987").StdOut.ReadAll

で、Result に格納されます。

【18487】Re:コマンドプロンプトの実行結果
お礼  モンプチ  - 04/9/28(火) 12:30 -

引用なし
パスワード
   Kein様、御返事有難う御座います。
御礼遅れて申し訳御座いません。
お忙しい中有難う御座いました。

Pingの出力結果の格納方法はまったく思いつきもしませんでした。
帰宅後試してみたいと思います。

今回私が行っていたのは、アクセス権「CACLS」コマンドの実行成否判定でした。
禰宜様からのアドバイスで修正実行した結果解かったことなんですが、
「Shell」が「0」になるのとコマンドが失敗するのは別なんですね。
「Shell」が「0」になるのは、コマンド自体が実行できない場合だけなんですね。

結局。実行結果を一旦ファイルに出力し、
それを読み取る事で成否判定できました。

この掲示板で御返事頂き、とても勉強になりました。
できるだけ自分で頑張ります。

有難う御座いました。

11043 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free