MACアドレス、IPアドレス、サブネットマスクを取得

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

 ■実行結果

※取得した値は伏せた状態での画像になります。