- ベストアンサー
マクロでping送信
私が今行いたいことは、 ExcelにIPアドレスを複数入力し、ボタンひとつでコマンドプロンプトがExcelに入力した数だけ開き、pingを送信するというようなマクロを作りたいと思うのですがぜんぜんわかりません。 また、送信する回数も設定したいです。 もしコマンドプロンプトを起動したり出来なのであれば、コマンドプロンプトでpingを送信したときみたいなパケットロスや応答時間などが出るようなものを作りたいです。 もし、作り方がわかる方がいましたら教えてください。 よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>しかし、無知なものでどこにどうゆうふうに >追加したらいいのかわかりません。 単純に書くとこんな感じ? Dim WshShell, oExec, inp Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("cmd /c ping " & "-n " & Range("b2").Value & " -w " & Range("c2").Value & " " & Range("a2").Value) inp = "" Do While Not oExec.StdOut.AtEndOfStream inp = inp & oExec.StdOut.Read(1) Loop Do While oExec.Status = 0 Loop Set oExec = WshShell.Exec("cmd /c ping " & "-n " & Range("b3").Value & " -w " & Range("c3").Value & " " & Range("a3").Value) Do While Not oExec.StdOut.AtEndOfStream inp = inp & oExec.StdOut.Read(1) Loop Do While oExec.Status = 0 Loop Set oExec = WshShell.Exec("cmd /c ping " & "-n " & Range("b4").Value & " -w " & Range("c4").Value & " " & Range("a4").Value) Do While Not oExec.StdOut.AtEndOfStream inp = inp & oExec.StdOut.Read(1) Loop Range("d5").Value = inp ファイト( ・_・)ノ☆(*_ _)パシ
その他の回答 (6)
- ittochan
- ベストアンサー率64% (2667/4137)
cmd /c ping " & "-n " & Range("b2").Value & " -w " & Range("c2").Value & " " & Range("a3").Value cmd /c ping " & "-n " & Range("b2").Value & " -w " & Range("c2").Value & " " & Range("a4").Value cmd /c ping " & "-n " & Range("b2").Value & " -w " & Range("c2").Value & " " & Range("a5").Value を追加するのはどうでしょ? 回数、タイムアウトをそれぞれ設定するのであれば cmd /c ping " & "-n " & Range("b3").Value & " -w " & Range("c3").Value & " " & Range("a3").Value とかにすればよいのでは?
- ittochan
- ベストアンサー率64% (2667/4137)
>pingの結果をテキストに保存するようなのも >できますでしょうか? できますが、それじゃぁ面白くないです。 Dim WshShell, oExec, inp Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("cmd /c ping " & "-n " & Range("b2").Value & " -w " & Range("c2").Value & " " & Range("a2").Value) inp = "" Do While Not oExec.StdOut.AtEndOfStream inp = inp & oExec.StdOut.Read(1) Loop Range("d3").Value = inp こういうのはどうでしょうか? セルD3に結果が表示されます。
補足
またまたありがとうございます。 またまたお願いなのですが、 現状では1つのIPアドレスにしかPINGを送信できないのですが、A3、A4、A5にIPアドレスをいれて一気に送信することはできますか? 頼りっぱなしですいません。
- ittochan
- ベストアンサー率64% (2667/4137)
>このマクロに追加で「-w 50」というのも >いっしょに実行させたいです。 ('◇')ゞラジャ タイムアウトですね。 RetVal = Shell("cmd /k ping " & "-n " & Range("b2").Value & " -w " & Range("c2").Value & " " & Range("a2").Value, 1) こんな感じ C2にタイムアウト値ね
- ittochan
- ベストアンサー率64% (2667/4137)
>コマンドプロンプトが立ち上がるだけで >動きませんでした(>_<) 変ですね。 タイプミスの可能性は? コマンドプロンプトにはエラーは表示されていませんか?
補足
もう一回やったらできました。 ありがとうございます。 また、無知な質問なのですがこのマクロに追加で「-w 50」というのもいっしょに実行させたいです。 あと、pingの結果をテキストに保存するようなのもできますでしょうか?
- ittochan
- ベストアンサー率64% (2667/4137)
windows2000やWindowsXPでしたら Dim RetVal RetVal = Shell("cmd /k ping " & "-n " & Range("b2").Value & " " & Range("a2").Value, 1) こんな感じ? セル A2はIPアドレス B2には回数 を入れときます
補足
ありがとうございます。 実際にやってみたのですが、コマンドプロンプトが立ち上がるだけで動きませんでした(>_<)
- ham_kamo
- ベストアンサー率55% (659/1197)
ちょっと直接のお答えにはなっていなかもしれませんが、ExcelのマクロとかVBAとかすっかり忘れてしまったので、バッチファイルを使って同じようなことができないか試してみました。 ip.txt というファイルに、 192.168.1.1 192.168.1.2 : : というIPアドレスの一覧が入っていたとして(テキストエディタで作っても、Excelで作ってテキストで保存してもいいと思いますが) これを一行ずつ読み込んで、それぞれのIPアドレスにpingを投げて、ログファイル(log.txt)に記述する、というバッチファイルを書いてみました。一応私の環境(Windows2000)では動きました。 ----------------------------------------------------- @echo off set LOGFILE=log.txt set IPFILE=ip.txt if exist %LOGFILE% del %LOGFILE% FOR /F %%i in (%IPFILE%) do ping %%i >> %LOGFILE% ----------------------------------------------------- もし参考になれば幸いです。
補足
ありがとうございます。 うまくいきました。 これに加えてなのですが、pingを送信する回数とかも入れることができますでしょうか? よろしくお願いします。
補足
ありがとうございます。 しかし、無知なものでどこにどうゆうふうに追加したらいいのかわかりません。 よろしくおねがいします。