List all Network Adapters using Excel VBA

Excel VBA code in this page can list all the network adapters in your computer along with its complete attributes.

Network adapters are used to connect a computer to a LAN (Local Area Network) or Internet. This can be done by wired (Ethernet) or a wireless connection. The network adapter is the connection point between computer & network.

One of the well known attribute of a network adapter is MAC address. ( i.e.,Media Access Control Address).

Including this, we can retrieve about 40 attributes of a network adapter from this below code.

VBA code to Get Network Adapter Name, MAC, Connection Status

Create a new workbook, open VB editor by pressng Alt + F11. Insert new module and copy paste the below code into the new module.

Then press F5. this code will fetch all the 40 attributes of each network adapters in your machine and list them in sheet 1.

Sub Get_All_Network_Adapter_Details()
    Dim iSh As Worksheet, i As Integer
    
    'Get All Network Adapter Details
    Set iSh = ThisWorkbook.Sheets(1)
    Set wmi = GetObject("winmgmts:root\CIMV2")
    Set adapters = wmi.ExecQuery("Select * from Win32_NetworkAdapter")

    'Attributes of Each Adapter
    iSh.Cells(1, 1) = "AdapterType"
    iSh.Cells(1, 2) = "AdapterTypeID"
    iSh.Cells(1, 3) = "AutoSense"
    iSh.Cells(1, 4) = "Availability"
    iSh.Cells(1, 5) = "Caption"
    iSh.Cells(1, 6) = "ConfigManagerErrorCode"
    iSh.Cells(1, 7) = "ConfigManagerUserConfig"
    iSh.Cells(1, 8) = "CreationClassName"
    iSh.Cells(1, 9) = "Description"
    iSh.Cells(1, 10) = "DeviceID"
    iSh.Cells(1, 11) = "ErrorCleared"
    iSh.Cells(1, 12) = "ErrorDescription"
    iSh.Cells(1, 13) = "GUID"
    iSh.Cells(1, 14) = "Index"
    iSh.Cells(1, 15) = "InstallDate"
    iSh.Cells(1, 16) = "Installed"
    iSh.Cells(1, 17) = "InterfaceIndex"
    iSh.Cells(1, 18) = "LastErrorCode"
    iSh.Cells(1, 19) = "MACAddress"
    iSh.Cells(1, 20) = "Manufacturer"
    iSh.Cells(1, 21) = "MaxNumberControlled"
    iSh.Cells(1, 22) = "MaxSpeed"
    iSh.Cells(1, 23) = "Name"
    iSh.Cells(1, 24) = "NetConnectionID"
    iSh.Cells(1, 25) = "NetConnectionStatus"
    iSh.Cells(1, 26) = "NetEnabled"
    iSh.Cells(1, 27) = "NetworkAddresses"
    iSh.Cells(1, 28) = "PermanentAddress"
    iSh.Cells(1, 29) = "PhysicalAdapter"
    iSh.Cells(1, 30) = "PNPDeviceID"
    iSh.Cells(1, 31) = "PowerManagementCapabilities"
    iSh.Cells(1, 32) = "PowerManagementSupported"
    iSh.Cells(1, 33) = "ProductName"
    iSh.Cells(1, 34) = "ServiceName"
    iSh.Cells(1, 35) = "Speed"
    iSh.Cells(1, 36) = "Status"
    iSh.Cells(1, 37) = "StatusInfo"
    iSh.Cells(1, 38) = "SystemCreationClassName"
    iSh.Cells(1, 39) = "SystemName"
    iSh.Cells(1, 40) = "TimeOfLastReset"

    'Get Details of Each Network Adapter Attribute
    i = 2
    For Each adapter In adapters
        With adapter
            iSh.Cells(i, 1) = .AdapterType
            iSh.Cells(i, 2) = .AdapterTypeID
            iSh.Cells(i, 3) = .AutoSense
            iSh.Cells(i, 4) = .Availability
            iSh.Cells(i, 5) = .Caption
            iSh.Cells(i, 6) = .ConfigManagerErrorCode
            iSh.Cells(i, 7) = .ConfigManagerUserConfig
            iSh.Cells(i, 8) = .CreationClassName
            iSh.Cells(i, 9) = .Description
            iSh.Cells(i, 10) = .DeviceID
            iSh.Cells(i, 11) = .ErrorCleared
            iSh.Cells(i, 12) = .ErrorDescription
            iSh.Cells(i, 13) = .GUID
            iSh.Cells(i, 14) = .Index
            iSh.Cells(i, 15) = .InstallDate
            iSh.Cells(i, 16) = .Installed
            iSh.Cells(i, 17) = .InterfaceIndex
            iSh.Cells(i, 18) = .LastErrorCode
            iSh.Cells(i, 19) = .MACAddress
            iSh.Cells(i, 20) = .Manufacturer
            iSh.Cells(i, 21) = .MaxNumberControlled
            iSh.Cells(i, 22) = .MaxSpeed
            iSh.Cells(i, 23) = .Name
            iSh.Cells(i, 24) = .NetConnectionID
            iSh.Cells(i, 25) = .NetConnectionStatus
            iSh.Cells(i, 26) = .NetEnabled
            iSh.Cells(i, 27) = .NetworkAddresses
            iSh.Cells(i, 28) = .PermanentAddress
            iSh.Cells(i, 29) = .PhysicalAdapter
            iSh.Cells(i, 30) = .PNPDeviceID
            iSh.Cells(i, 31) = .PowerManagementCapabilities
            iSh.Cells(i, 32) = .PowerManagementSupported
            iSh.Cells(i, 33) = .ProductName
            iSh.Cells(i, 34) = .ServiceName
            iSh.Cells(i, 35) = .Speed
            iSh.Cells(i, 36) = .Status
            iSh.Cells(i, 37) = .StatusInfo
            iSh.Cells(i, 38) = .SystemCreationClassName
            iSh.Cells(i, 39) = .SystemName
            iSh.Cells(i, 40) = .TimeOfLastReset

            'adapter.disable()
            'adapter.enable()
        End With
        i = i + 1
    Next
End Sub

Notice there are 2 commented lines towards the end of the code. These commented code can be used to enable or disable a network adapter in your machine.

What we are going to achieve here can also be displayed using a one line Command prompt command. open a cmd promt and try this command as well.

wmic nic get AdapterType, Name, MACAddress

For example: You can choose to disable/switch off wired connection and enable the Wireless connection alone.

Attribute list source: The list of all 40 attributes of network adapter is taken from this link.

All possible values for each attribute and their meaning can be found in this link.

Leave a Reply