IPアドレスからMACアドレスを取得する(arp)

IPアドレスからMACを取得します。取得には、コマンドプロンプトを起動し、arpコマンドを発行。
結果をクリップボードにコピーし、そこからIPアドレスを検索します。
arpコマンドを発行する前に、pingを発行するとarpテーブルを更新されます。
Pingの実行とセットで使用してください。

arp -a を発行し、物理アドレスの部分だけを取り出します。

' ------------------------------------------------------------
' 説明:IPアドレスからMACアドレスを取得する(arp コマンドを使用)
' 引数:1:MACアドレスを取得したIPアドレス
' 戻値:MACアドレス
' 補足:-
' ------------------------------------------------------------
Function GetMacAddr(addr As String)
	Dim data As Variant
	Dim result As Variant
	Dim wk As String

	' コマンドプロンプトを実行しクリップボードに取得する
	CreateObject("WScript.Shell").Run "%ComSpec% /c arp -a|clip", 0, True

	' 取得した情報を配列に格納する
	data = Split(GetObject("\", "htmlfile").ParentWindow.ClipboardData.GetData("text"), vbCrLf)

	' MACアドレスを含む情報を検索する
	For Each result In data
		If result Like "* " & addr & " *" Then
			wk = Trim(Replace(result, addr, ""))	' IPアドレスを除去
			wk = Trim(Replace(wk, "動的", ""))	' 種類を除去(英語の場合は、dynamicにしてください)
			wk = Trim(Replace(wk, " ", ""))	 	' スペースを除去

			GetMacAddr = wk
			Exit Function
		End If
	Next
End Function

【補足】
アンチウィルスの種類によっては、スクリプト実行時に処理をブロックすることがあります。
Norton360 アンチウィルスの例は、次を参照してください。
スクリプト実行時の確認(アンチウィルス)

コメント