Realize,Inc.

VBAコラム

現在のPCのIP・サブネット・ゲートウェイを確認する

トラブル時の初期確認をExcel VBAで行いましょう

ネットワークトラブル時は、まず現在のPCに設定されている IPアドレス、サブネットマスク、デフォルトゲートウェイを確認することが重要です。 ここでは、WMIを使って現在のPCのネットワーク設定を取得するVBA例を整理します。

VBAで現在のPCのネットワーク設定を確認するイメージ

こんな場面で使う

  • インターネットにつながらないときの初期確認
  • IPアドレスやサブネットマスクの設定確認
  • デフォルトゲートウェイの設定ミス確認
  • 問い合わせ前に現在のPC情報を整理したいとき

確認する情報

flowchart TB
	Start[Excel VBA]
	WMI[WMIでネットワーク設定を取得]
	IP[IPアドレス]
	Subnet[サブネットマスク]
	Gateway[デフォルトゲートウェイ]
	Result[Excelへ一覧表示]

	Start --> WMI
	WMI --> IP
	WMI --> Subnet
	WMI --> Gateway
	IP --> Result
	Subnet --> Result
	Gateway --> Result

VBAコード

Sub GetCurrentPCNetworkInfo()

    Dim ws As Worksheet
    Dim objWMI As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim row As Long

    Set ws = ActiveSheet

    ws.Cells.Clear

    ws.Range("A1").Value = "項目"
    ws.Range("B1").Value = "値"

    ws.Range("A1:B1").Interior.Color = RGB(220, 230, 241)
    ws.Range("A1:B1").Font.Bold = True

    Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
    Set colItems = objWMI.ExecQuery( _
        "Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True")

    row = 2

    For Each objItem In colItems

        ws.Cells(row, 1).Value = "説明"
        ws.Cells(row, 2).Value = objItem.Description
        row = row + 1

        If Not IsNull(objItem.IPAddress) Then
            ws.Cells(row, 1).Value = "IPアドレス"
            ws.Cells(row, 2).Value = objItem.IPAddress(0)
            row = row + 1
        End If

        If Not IsNull(objItem.IPSubnet) Then
            ws.Cells(row, 1).Value = "サブネットマスク"
            ws.Cells(row, 2).Value = objItem.IPSubnet(0)
            row = row + 1
        End If

        If Not IsNull(objItem.DefaultIPGateway) Then
            ws.Cells(row, 1).Value = "デフォルトゲートウェイ"
            ws.Cells(row, 2).Value = objItem.DefaultIPGateway(0)
            row = row + 1
        End If

        If Not IsNull(objItem.DNSServerSearchOrder) Then
            ws.Cells(row, 1).Value = "DNSサーバー"
            ws.Cells(row, 2).Value = Join(objItem.DNSServerSearchOrder, ", ")
            row = row + 1
        End If

        ws.Cells(row, 1).Value = "MACアドレス"
        ws.Cells(row, 2).Value = objItem.MACAddress
        row = row + 2

    Next objItem

    ws.Columns("A:B").AutoFit

    MsgBox "現在のPCのネットワーク情報を取得しました。", vbInformation

End Sub

コードの解説

  1. WMIへ接続する

    winmgmts:\\.\root\cimv2 へ接続し、Windowsの管理情報を取得できるようにします。

  2. 有効なネットワークアダプターを取得する

    IPEnabled = True の条件で、IPアドレスが有効なネットワークアダプターだけを対象にします。

  3. IPアドレスを確認する

    IPAddress から、現在PCに設定されているIPアドレスを取得します。

  4. サブネットとゲートウェイを確認する

    IPSubnetDefaultIPGateway から、サブネットマスクとデフォルトゲートウェイを取得します。

  5. Excelへ出力する

    取得した情報を項目名と値の形でExcelへ一覧表示します。

出力例

項目
説明 Intel(R) Ethernet Connection
IPアドレス 192.168.1.25
サブネットマスク 255.255.255.0
デフォルトゲートウェイ 192.168.1.1
DNSサーバー 192.168.1.1, 8.8.8.8
MACアドレス 00-11-22-33-44-55

注意点

PCに有線LANとWi-Fiの両方が有効になっている場合、 複数のネットワークアダプター情報が表示されることがあります。

取得結果にIPアドレスが表示されない場合は、 ネットワークアダプターが無効になっている、またはIPアドレスを取得できていない可能性があります。

まとめ

  • VBAで現在のPCのIPアドレスを確認できます
  • サブネットマスクやデフォルトゲートウェイも取得できます
  • ネットワークトラブル時の初期確認に役立ちます

ネットワーク設計・トラブル対応でお困りではありませんか?

株式会社リアライズがサポートいたします。

  • ネットワーク設計・構築
  • トラブル調査・改善
  • 業務効率化・自動化
お問い合わせはこちら