ネットワークアダプタの情報を取得

ネットワークアダプタの情報を取得する。

WMI(Windows Management Instrumentation)を利用してネットワークアダプタの情報を取得します。
VBAでWMIから情報を取得するにはSWbemLocatorオブジェクトのConnectServerメソッドを利用してコンピューター上の WMIへ接続することで取得できます。
ネットワークアダプタの情報は接続したWMIの Win32_NetworkAdapterConfigurationクラス から取得します。

サンプルコードではネットワーク アダプタが有効となっていないネットワークアダプタの情報も取得しています。
有効な状態のネットワークアダプタの情報が欲しい場合は、 ExecQueryメソッドで指定しているSQLのWhere句に「Where IPEnabled = True」を付けて条件を絞ってください。
 ※サンプルコードではコメントアウトした状態で記載しています。

'*****************************************************************
' ネットワークアダプタの情報を取得
'*****************************************************************
Function getNWInfo() 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")
    
    'ネットワークアダプタが「有効」な状態の情報だけを出力する場合は下記のクエリを指定
    'Set oQrySet = oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled = True")
    
    On Error Resume Next
    Debug.Print "NetworkAdapterConfiguration"

    Dim i As Long
    Dim sIpv6 As String
    Dim sIpv6MC As String
    Dim sIpv6LL As String
    
    Dim oNWInfo As Object
    For Each oNWInfo In oQrySet
        Debug.Print "----------------------------------------------------"
        Debug.Print "Caption                 : " & oNWInfo.Caption
        Debug.Print "index                   : " & oNWInfo.Index
        Debug.Print "ネットワークアダプタ名  : " & oNWInfo.Description
        Debug.Print "サービス名              : " & oNWInfo.ServiceName
        Debug.Print "オブジェクト識別子      : " & oNWInfo.SettingID
        Debug.Print "MACアドレス             : " & oNWInfo.MACAddress
        Debug.Print "TCP/IPバインド          : " & oNWInfo.IPEnabled
        
        'DHCP
        Debug.Print "DHCP有効                : " & oNWInfo.DHCPEnabled
        Debug.Print "DHCPサーバ              : " & oNWInfo.DHCPServer
        Debug.Print "リース取得              : " & oNWInfo.DHCPLeaseObtained
        Debug.Print "リース有効期限          : " & oNWInfo.DHCPLeaseExpires
        
        'IP
        For i = 0 To UBound(oNWInfo.IPAddress)
            If InStr(oNWInfo.IPAddress(i), ".") > 0 Then
                Debug.Print "IPアドレス(IPv4)        : " & oNWInfo.IPAddress(i)
            Else
                Select Case Left(oNWInfo.IPAddress(i), 6)
                Case "ff00::": sIpv6MC = oNWInfo.IPAddress(i) 'マルチキャスト
                Case "fe80::": sIpv6LL = oNWInfo.IPAddress(i) 'リンクローカルIPアドレス
                Case Else
                    sIpv6 = sIpv6 & "," & oNWInfo.IPAddress(i)
                    Debug.Print "IPアドレス(IPv6)        : " & oNWInfo.IPAddress(i)
                End Select
            End If
        Next
        If sIpv6LL <> "" Then: Debug.Print "リンクローカルIPアドレス(IPv6) : " & sIpv6LL
        If sIpv6MC <> "" Then: Debug.Print "マルチキャストIPアドレス(IPv6) : " & sIpv6MC
        
        For i = 0 To UBound(oNWInfo.DefaultIPGateway)
            If InStr(oNWInfo.DefaultIPGateway(i), ".") > 0 Then
                Debug.Print "デフォルトゲートウェイ(IPv4) : " & oNWInfo.DefaultIPGateway(i)
            Else
                Debug.Print "デフォルトゲートウェイ(IPv6) : " & oNWInfo.DefaultIPGateway(i)
            End If
        Next
        Debug.Print "サブネットマスク        : " & Join(oNWInfo.IPSubnet, ",")
            
        'DNS
        Debug.Print "DNSホストネーム         : " & oNWInfo.DNSHostName
        Debug.Print "DNSサーバ               : " & Join(oNWInfo.DNSServerSearchOrder, ",")
        Debug.Print "DNSサフィックス検索一覧 : " & Join(oNWInfo.DNSDomainSuffixSearchOrder, ",")
            
        'ローカル参照(WINSEnableLMHostsLookupがTRUEならローカル参照ファイルを使用)
        Debug.Print "ローカル参照ファイル有効: " & oNWInfo.WINSEnableLMHostsLookup 
        Debug.Print "インターネットデータベースファイルへのパス: " & oNWInfo.DatabasePath

    Next
    On Error GoTo 0
    
    Set oWMI = Nothing
    Set oQrySet = Nothing
    
End Function

 ■実行結果

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