ネットワークアダプタの情報を取得する。
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
■実行結果