• ベストアンサー

マクロでping送信

私が今行いたいことは、 ExcelにIPアドレスを複数入力し、ボタンひとつでコマンドプロンプトがExcelに入力した数だけ開き、pingを送信するというようなマクロを作りたいと思うのですがぜんぜんわかりません。 また、送信する回数も設定したいです。 もしコマンドプロンプトを起動したり出来なのであれば、コマンドプロンプトでpingを送信したときみたいなパケットロスや応答時間などが出るようなものを作りたいです。 もし、作り方がわかる方がいましたら教えてください。 よろしくお願いします。

  • taws
  • お礼率16% (46/279)

質問者が選んだベストアンサー

  • ベストアンサー
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.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)
回答No.6

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 とかにすればよいのでは?

taws
質問者

補足

ありがとうございます。 しかし、無知なものでどこにどうゆうふうに追加したらいいのかわかりません。 よろしくおねがいします。

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.5

>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に結果が表示されます。

taws
質問者

補足

またまたありがとうございます。 またまたお願いなのですが、 現状では1つのIPアドレスにしかPINGを送信できないのですが、A3、A4、A5にIPアドレスをいれて一気に送信することはできますか? 頼りっぱなしですいません。

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.4

>このマクロに追加で「-w 50」というのも >いっしょに実行させたいです。 ('◇')ゞラジャ タイムアウトですね。 RetVal = Shell("cmd /k ping " & "-n " & Range("b2").Value & " -w " & Range("c2").Value & " " & Range("a2").Value, 1) こんな感じ C2にタイムアウト値ね

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.3

>コマンドプロンプトが立ち上がるだけで >動きませんでした(>_<) 変ですね。 タイプミスの可能性は? コマンドプロンプトにはエラーは表示されていませんか?

taws
質問者

補足

もう一回やったらできました。 ありがとうございます。 また、無知な質問なのですがこのマクロに追加で「-w 50」というのもいっしょに実行させたいです。 あと、pingの結果をテキストに保存するようなのもできますでしょうか?

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.2

windows2000やWindowsXPでしたら Dim RetVal RetVal = Shell("cmd /k ping " & "-n " & Range("b2").Value & " " & Range("a2").Value, 1) こんな感じ? セル A2はIPアドレス B2には回数 を入れときます

taws
質問者

補足

ありがとうございます。 実際にやってみたのですが、コマンドプロンプトが立ち上がるだけで動きませんでした(>_<)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

ちょっと直接のお答えにはなっていなかもしれませんが、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% ----------------------------------------------------- もし参考になれば幸いです。

taws
質問者

補足

ありがとうございます。 うまくいきました。 これに加えてなのですが、pingを送信する回数とかも入れることができますでしょうか? よろしくお願いします。

関連するQ&A

  • ping コマンドで、IPアドレスならばpingは返ってきますが、wwwのアドレスだと返ってきません。

    ping コマンドで、IPアドレスならばpingは返ってきますが、wwwのアドレスだと返ってきません。 Windowsのコマンドプロンプトだと返ってくるのですが。 お願いいたします。

  • VBScriptでPing

    ネットワーク上の複数のアドレスにPingを打ってその応答によって 処理を分岐させるプログラムをVBSで作成しているのですが、 実行するたびにコマンドプロンプトが開いたり閉じたりして 何か嫌なんですが、仕方ないのでしょうか? 方法としてはWScript.ShellでPingコマンドを実行してます。 ループしながら処理を分岐させているのでコマンドプロンプトが 開いたり閉じたりしてしまいます。 何かよい解決方法はないのでしょうか? どなたかご教授ください。 または参考サイトなど教えてください、お願い致します。

  • エクセル2010マクロ ping送信マクロ作成

    初めて質問します。マクロ初心者です。 ある複数のIPアドレスに対してpingを送信し、 ●正常ならば正常 ●”宛先ホストに到達できません”、もしくは”受信=0”のときエラー をそれぞれ返すマクロを作成したいと考えております。 ネットで検索して下記のマクロを作成したのですが、正常と”受信=0”は判別できても ”宛先ホストに到達できません”も正常として返してしまうので困っております。 どなたかご教授くださいませ。宜しくお願い致します。 ※マクロの概要です。 D5~D89にIPアドレスを入力。 正常ならばそれぞれ対応した行のE列に”0”を。 異常ありならば、それぞれ対応した行のE列に”1”、F列に”エラー”を入力。 Sub ping送信マクロ  For i = 5 To Cells(Rows.Count, 4).End(xlUp).Row cmd = "cmd.exe /c ping " & Cells(i, 4) Set objWSH = CreateObject("WScript.Shell") If objWSH.Run(cmd, vbNormalFocus, True) Then Cells(i, 5) = "1" Cells(i, 6) = "エラー" Else Cells(i, 5) = "0" End If Set objWSH = Nothing Next End Sub アドバイスはもちろんですが、何分マクロ触りたてですので”例”として完成したものを 載せて頂けると非常に助かります!

  • pingが通らない

    コマンドラインであるサーバーのIPアドレスを指定して ping xxx.xxx.xxx.xxx と実行すると「要求がタイムアウトしました。」と出ます。 しかし、mysqlのコマンドで mysql -u root -h xxx.xxx.xxx.xxx -p とコマンドを打つとmysqlにログインすることができます。 pingでは応答がないIPアドレスなのにmysqlコマンドでIPを指定してログインできると いうのはどういうことなのでしょうか。

  • PINGで教えてください。

    教えてください。 IPルータ接続で、例えば、 192.168.1.0/24セグメント 192.168.2.0/24セグメント 192.168.3.0/24セグメント になっているネットワーク構成で、 自セグメントが192.168.1.0/24で、192.168.1.1のPCから、PINGコマンドを次のように入れたら、 PING 192.168.3.0と入れたら、 192.168.3.254(ルータのアドレス)の応答が返ってきました。 PING xx.xx.xx.0と入れる意味を教えてください。

  • pingについて教えてください

    pingテストについて、例えばコマンドプロンプトにてping www.okweb.ne.jpといった具合に入力して確認しているのですが、上記もそうですが、他のサイトも上記のように打って通るところと通らないところがあります。 これはなぜなのでしょうか?サイトによってpingを返さないことがあるのでしょうか? また、普段上記のように打って返ってきていたのに、通らなくなってしまうとか(でもサイトは表示されます)いうことがありますが、これもなぜでしょうか?これは単にコマンドプロンプトがうまく起動できていなかっただけだとか??? 何かお分かりになることを教えていただけたらと思います。 よろしくお願いします。

  • PING送信後、違うID・IPが返信される

    100.100.100.1のPCから100.100.100.2のPCへpingコマンドを送信すると、ネットワーク上の他PCより応答が帰る事があります。 ping 100.100.100.2送信    100.100.100.5応答 この様な事は一般的に発生するものなのでしょうか? 経路上には、SW-HUBのみです。

  • ping, ipconfigコマンドについてお尋ねします。

    現在有線LANでネットワークが組んであります。ネットワーク上の 機器の一部の機能が正常に動作しないためネットワークをしらべています。OSはXPです ipconfig /allでデフォルトゲートウェイと表示されたipアドレス(ルーター buffelo WHR-G54S)にpingコマンドを実行しても応答がありません。タイムアウトになります。(不確かですが以前は出来ていた記憶があります)ルーターを介して、インターネット、プリンタ等は動作させることが出来ていますので、ネットワークは機能しているはずなのですが。ipconfigで表示された他のipに対しては応答があります。またルーターの設定画面のなかではこのipアドレスにたいしてのpingテストは出来ています。コマンドプロンプトからのpingテストができないのです。 質問1:デフォルトゲートウェイに対してpingコマンドは使えるのでしょうか? 質問2:現在パソコン→ルーター→プリンタと繋がっていますが、ipconfig /allでルーターから先のipアドレス(プリンタ)は確認できるのでしょうか?現在は出来ていません。 ネットワークに関する知識がないので、質問が間違っているかもしれません、それも含めてご教示宜しくお願いします。

  • ping送信フリーウェア

    探しているツールは、 ・複数のpingを同時またはボタン一回で一気に送信 ・ログが残る(ログの内容はwindowsのようなもの) ・複数のpingをグループごとに保存することができ、そのグループを選択して、pingを送信できる。 上記のようなツールを探しています。 全て該当するようなものがあればよいのですがなければ2つでも該当していればいいのでよろしくお願いします。

  • CMD ping機能について

    コマンドのpingでipアドレスを指定した場合、応答結果にて パソコンかプリンタを判断することは可能でしょうか? 宜しくお願いします。

専門家に質問してみよう