Excel 提取脱机MAC地址

Excel 提取脱机MAC地址,excel,macos,vba,Excel,Macos,Vba,我目前正在制作一份Excel表格,其中包含提取MAC地址的信息。我使用以下代码提取了连接/在线MAC地址: Dim objVMI As Object Dim vAdptr As Variant Dim objAdptr As Object Dim adptrCnt As Long Set objVMI = GetObject("winmgmts:\\" & "." & "\root\cimv2") Set vAdptr = objVMI.ExecQuery("SELECT *

我目前正在制作一份Excel表格,其中包含提取MAC地址的信息。我使用以下代码提取了连接/在线MAC地址:

Dim objVMI As Object
Dim vAdptr As Variant
Dim objAdptr As Object
Dim adptrCnt As Long


Set objVMI = GetObject("winmgmts:\\" & "." & "\root\cimv2")
Set vAdptr = objVMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each objAdptr In vAdptr
If Not IsNull(objAdptr.MACAddress) And IsArray(objAdptr.IPAddress) Then
For adptrCnt = 0 To UBound(objAdptr.IPAddress)
If Not objAdptr.IPAddress(adptrCnt) = "0.0.0.0" Then
GetNetworkConnectionMACAddress = objAdptr.MACAddress
Exit For
End If
Next adptrCnt
End If
Next

Range("A1").Value = GetNetworkConnectionMACAddress

但是,此代码仅提取连接的MAC。我可以知道如何提取脱机MAC地址吗?

您是否要求获取计算机上所有可用适配器的所有MAC地址,无论它们是否有连接。。如果是这样的话,当您去掉
WHERE
子句(
WHERE-IPEnabled=True
)时会返回什么结果?是的。我更喜欢它提取所有的MAC地址,不管是否有连接。然后从那里我为我的代码选择第一个MAC地址。我删除了where子句,但结果仍然相同,它只返回连接的MAC地址
Public Function getMacAddress()
'== function to get MAC adress (all)
Dim objVMI As Object, vAdptr As Variant
Dim objAdptr As Object
Dim strMacAdr As String, i As Long
      getMacAddress = vbNullString
      Set objVMI = GetObject("winmgmts:\\" & "." & "\root\cimv2")
'== get the using MAC address with IP
      Set vAdptr = objVMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
      For Each objAdptr In vAdptr
            If IsNull(objAdptr.MACAddress) Then GoTo ff
            strMacAdr = Trim(objAdptr.MACAddress)
            If Not IsArray(objAdptr.IPAddress) Then GoTo ff
             For i = 0 To UBound(objAdptr.IPAddress)
                  If Not Trim(objAdptr.IPAddress(i)) = "0.0.0.0" Then getMacAddress = getMacAddress & vbCrLf & strMacAdr & " (" & Trim(objAdptr.IPAddress(i)) & ")"
            Next
ff:
      Next
'== get all MAC address
      Set vAdptr = objVMI.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL")
      For Each objAdptr In vAdptr
            If Not IsNull(objAdptr.MACAddress) Then
                  strMacAdr = Trim(objAdptr.MACAddress)
                  If InStrRev(getMacAddress, strMacAdr) = 0 Then getMacAddress = getMacAddress & vbCrLf & Trim(objAdptr.MACAddress)
            End If
      Next
      Set objVMI = Nothing
      Set vAdptr = Nothing
      Set objAdptr = Nothing
      MsgBox getMacAddress
End Function