MACアドレス、IPアドレス(IPv4/IPv6)、サブネットマスクを取得する。
VBAでMACアドレス、IPアドレス(IPv4/IPv6)、サブネットマスクを取得する処理になります。
取得するにはWMI(Windows Management Instrumentation)を利用します。
WMIから情報を取得するにはSWbemLocatorオブジェクトのConnectServerメソッドを利用してコンピューター上の WMIへ接続することで取得できます。
MACアドレス、IPアドレスなどの情報は接続したWMIの Win32_NetworkAdapterConfiguration クラス から取得します。
'*****************************************************************
' MACアドレス、IPアドレス(ipv4/6)、サブネットマスクを取得
'*****************************************************************
Function getNWInfo_ip() As String
'SWbemLocatorオブジェクトを作成してWMIに接続
Dim oWMI As Object
Set oWMI = CreateObject("WbemScripting.SWbemLocator").ConnectServer
'オブジェクト取得のクエリを実行
Dim oQrySet As Object
Set oQrySet = oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
Dim i As Long
Dim sIpv6 As String
Dim oNWInfo As Object
'MACアドレス、IPアドレス(ipv4/6)、サブネットマスクを取得
For Each oNWInfo In oQrySet
Debug.Print "----------------------------------------------------"
Debug.Print "ネットワークアダプタ名 : " & oNWInfo.Description
'MACアドレス取得
Debug.Print "MACアドレス : " & oNWInfo.MACAddress
'IPアドレス取得(v4/v6)
For i = 0 To UBound(oNWInfo.IPAddress)
If InStr(oNWInfo.IPAddress(i), ".") > 0 Then
Debug.Print "IPアドレス(IPv4) : " & oNWInfo.IPAddress(i)
Else 'IPv6
Select Case Left(oNWInfo.IPAddress(i), 6)
Case "ff00::": sIpv6 = "マルチキャストIPアドレス(IPv6) : "
Case "fe80::": sIpv6 = "リンクローカルIPアドレス(IPv6) : "
Case Else: sIpv6 = "IPアドレス(IPv6) : "
End Select
Debug.Print sIpv6 & oNWInfo.IPAddress(i)
End If
Next
'サブネットマスク取得
Debug.Print "サブネットマスク : " & oNWInfo.IPSubnet(0)
Next
Set oWMI = Nothing
Set oQrySet = Nothing
End Function
■実行結果