Excel 提取脱机MAC地址
我目前正在制作一份Excel表格,其中包含提取MAC地址的信息。我使用以下代码提取了连接/在线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 *
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