2015年06月08日

ExcelでSheet内のIPをクリックでPing送信

Excelの表を使ってネットワーク情報を
管理している方もたくさんいると思うが
IPをクリックしたらPing送信なんてのが
簡単にできたら楽ですよね
ということで簡易的にPingをする仕組みを作成し
最後に改良して使えるもににしてみた

まずはマクロ有効ブックを1つ作ります
仮に作ったブックをPing.xlsmとしましょう
作りたてのブックのSheet1を右クリックし
コードの表示でVBEを起動します

次に(General)の部分をWorksheetに変更し
SelectionChangeの部分をBeforeDoubleClickに変更する
まぁこんな感じ
ExcelでSheet内のIPをクリックでPing送信

そしてBeforeDoubleClickの部分に以下のコードを記述
-t の後ろには半角スペースが1つ入っているのに注意

Dim ret
ret = Shell("ping -t " & ActiveCell.Value, vbNormalFocus)


あとはIPの記述してあるセルをダブルクリックすると
コマンドプロンプトが起動してPingが連続送信されます
しかしこのままだとドコをクリックしても送信されるので
送信できるセル範囲をIf文あたりで制御するとか
もう一手間必要になる

画像はスクロールして全体をみれます
ExcelでSheet内のIPをクリックでPing送信

ということで
タカさんは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


わかりずらいので画像も貼っておきます
ExcelでSheet内のIPをクリックでPing送信





上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
ExcelでSheet内のIPをクリックでPing送信
    コメント(0)