
初めて質問します。マクロ初心者です。
ある複数の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
アドバイスはもちろんですが、何分マクロ触りたてですので”例”として完成したものを
載せて頂けると非常に助かります!
No.1ベストアンサー
- 回答日時:
部分的な完成形ですが、下記を読んでみてください。
コマンドプロンプトの標準出力を取得する
http://www.moug.net/tech/exvba/0150123.html
Result にコマンドの出力結果が格納されます。
これを、
If Instr(Result,"宛先ホストに到達できません")> 0 then
のように調べれば良いでしょう。
こちら(Win7)で少し見た限りでは
"が見つかりませんでした。ホスト名を確認してもう一度実行してください。" や
"転送に失敗しました。一般エラーです。"
などエラーメッセージの拾い出しを行う必要がありそうです。
また、WinXPではそっけない英文メッセージでしたが、Win7では日本語ですので
Vistaの場合はどうなんでしょう。
もしかしたら日本語でも少し表現が異なっている場合も考えられます。
・・・と考えましたが、疎通の確認だけならば
成功した場合には、"ラウンド トリップの概算時間(ミリ秒):"が含まれますので
これを頼りに
Sub ping送信マクロ弐()
Dim objWSH As Object, oEx As Object
Dim i As Integer
Dim sCmd As String
Dim sResult As String
Set objWSH = CreateObject("WScript.Shell")
For i = 5 To Cells(Rows.Count, 4).End(xlUp).Row
sCmd = "%ComSpec% /c ping -n 1 " & Cells(i, 4)
Set oEx = objWSH.Exec(sCmd)
Do While oEx.Status = 0
DoEvents
Loop
sResult = oEx.StdOut.ReadAll
If InStr(sResult, "ラウンド トリップの概算時間") = 0 Then
Cells(i, 5) = "1"
Cells(i, 6) = "エラー"
Else
Cells(i, 5) = "0"
Cells(i, 6) = ""
End If
Next
Set objWSH = Nothing
End Sub
補足
"ラウンド トリップの概算時間(ミリ秒)" の半角括弧があると
Instr関数がなぜか働かないので、 (ミリ秒) は削りました。
Ping は一回しか打ってません ping -n 1
なお、コマンドのウィンドウが出てきて煩わしいので、
下記のような方法もあります。
http://oshiete.goo.ne.jp/qa/2352463.html
http://www.wmifun.net/sample/win32_pingstatus.html
ありがとうございます。
”ラウンドトリップの概算時間”は盲点でした。
また、わざわざマクロも組んで頂いて感謝です。
無事理想のものができました!
誠にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メッセージボックスのOKボタ...
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
ExcelVBAでPDFを閉じるソース
-
エクセルに張り付けた写真のフ...
-
Excel_マクロ_現在開いているシ...
-
ExcelのVBA。public変数の値が...
-
TERA TERMを隠す方法
-
エクセル VBA実行中のApplicati...
-
Excelのセル値に基づいて図形の...
-
ダブルクリックで貼り付けた画...
-
マクロの連続印刷が突然不可能...
-
wordを起動した際に特定のペー...
-
【EXCEL VBA】オートシェイプを...
-
Excel VBAからAccessマクロを実...
-
Excelのマクロボタンをダブルク...
-
マクロで空白セルを詰めて別シ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
Excel_マクロ_現在開いているシ...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
Excel マクロでShearePoint先の...
-
エクセルに張り付けた写真のフ...
-
ExcelのVBA。public変数の値が...
-
エクセルで別のセルにあるふり...
-
TERA TERMを隠す方法
-
ExcelVBAでPDFを閉じるソース
-
エクセルで縦に並んだデータを...
-
マクロ実行時、ユーザーフォー...
-
Excel VBAからAccessマクロを実...
-
ダブルクリックで貼り付けた画...
-
【EXCEL VBA】オートシェイプを...
-
マクロで空白セルを詰めて別シ...
-
wordを起動した際に特定のペー...
おすすめ情報