2015年06月08日
ExcelでSheet内のIPをクリックでPing送信
Excelの表を使ってネットワーク情報を
管理している方もたくさんいると思うが
IPをクリックしたらPing送信なんてのが
簡単にできたら楽ですよね
ということで簡易的にPingをする仕組みを作成し
最後に改良して使えるもににしてみた
まずはマクロ有効ブックを1つ作ります
仮に作ったブックをPing.xlsmとしましょう
作りたてのブックのSheet1を右クリックし
コードの表示でVBEを起動します
次に(General)の部分をWorksheetに変更し
SelectionChangeの部分をBeforeDoubleClickに変更する
まぁこんな感じ

そしてBeforeDoubleClickの部分に以下のコードを記述
-t の後ろには半角スペースが1つ入っているのに注意
Dim ret
ret = Shell("ping -t " & ActiveCell.Value, vbNormalFocus)
あとはIPの記述してあるセルをダブルクリックすると
コマンドプロンプトが起動してPingが連続送信されます
しかしこのままだとドコをクリックしても送信されるので
送信できるセル範囲をIf文あたりで制御するとか
もう一手間必要になる
画像はスクロールして全体をみれます

ということで
タカさんはIPv4だけクリックで送信できればいいので
正規表現でIPv4だけダブルクリックで送信するようにしてみた
BeforeDoubleClickに記述する完成コードは以下
まぁIPv4以外もPingしたいよって人にはいらないコードだね(笑)
Dim exp
Set exp = CreateObject("VBScript.RegExp")
With exp
.Pattern = "^(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])$"
.IgnoreCase = False
.Global = True
If .Test(ActiveCell.Value) Then
Dim ret
ret = Shell("ping -t" & Chr(32) & ActiveCell.Value, vbNormalFocus)
End If
End With
Set exp = Nothing
わかりずらいので画像も貼っておきます

管理している方もたくさんいると思うが
IPをクリックしたらPing送信なんてのが
簡単にできたら楽ですよね
ということで簡易的にPingをする仕組みを作成し
最後に改良して使えるもににしてみた
まずはマクロ有効ブックを1つ作ります
仮に作ったブックをPing.xlsmとしましょう
作りたてのブックのSheet1を右クリックし
コードの表示でVBEを起動します
次に(General)の部分をWorksheetに変更し
SelectionChangeの部分をBeforeDoubleClickに変更する
まぁこんな感じ

そしてBeforeDoubleClickの部分に以下のコードを記述
-t の後ろには半角スペースが1つ入っているのに注意
Dim ret
ret = Shell("ping -t " & ActiveCell.Value, vbNormalFocus)
あとはIPの記述してあるセルをダブルクリックすると
コマンドプロンプトが起動してPingが連続送信されます
しかしこのままだとドコをクリックしても送信されるので
送信できるセル範囲をIf文あたりで制御するとか
もう一手間必要になる
画像はスクロールして全体をみれます

ということで
タカさんはIPv4だけクリックで送信できればいいので
正規表現でIPv4だけダブルクリックで送信するようにしてみた
BeforeDoubleClickに記述する完成コードは以下
まぁIPv4以外もPingしたいよって人にはいらないコードだね(笑)
Dim exp
Set exp = CreateObject("VBScript.RegExp")
With exp
.Pattern = "^(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])$"
.IgnoreCase = False
.Global = True
If .Test(ActiveCell.Value) Then
Dim ret
ret = Shell("ping -t" & Chr(32) & ActiveCell.Value, vbNormalFocus)
End If
End With
Set exp = Nothing
わかりずらいので画像も貼っておきます
