楼主 kevinchengcw |
Q: 如何用vba代码获取全部网卡的Mac地址? A: 示例代码1:
- Sub test()
- Dim Str$, Arr, N&, I&
- With CreateObject("wscript.shell")
- Str = .exec(Environ("comspec") & " /c ipconfig /all").stdout.readall '利用WSH对象读取命令行返回的结果文本并赋值给变量
- End With
- Arr = Split(Str, vbNewLine) '将结果文本拆分放入数组中
- N = 1 '初始化行号值
- For I = LBound(Arr) To UBound(Arr) '循环数组各项
- If LCase(Arr(I)) Like "*physical address*:*" Then '如果含有物理地址关键字,则
- Cells(N, 1) = Trim(Split(Arr(I), ":")(1)) '提取出物理地址放入当前循环到的单元格中
- N = N + 1 '下移一行
- ElseIf LCase(Arr(I)) Like "*description*:*" Then '如果含有网卡信息关键字,则
- Cells(N, 1) = Trim(Split(Arr(I), ":")(1)) '提取网卡信息放入当前循环到的单元格中
- N = N + 1 '下移一行
- End If
- Next I
- End Sub
本段程序无需中转文件,缺点是Dos窗口会闪出一下 示例代码2:
- Sub test2()
- Dim Str$, Arr, N&, I&, FN$
- FN = ThisWorkbook.Path & "\IpInfo.txt" '设定输出临时文件位置
- With CreateObject("wscript.shell")
- .Run Environ("comspec") & " /c ipconfig /all>""" & FN & """", 0, 1 '利用WSH对象隐藏执行命令行命令并输出到文件中,等待执行完成后才继续执行后续代码
- End With
- With CreateObject("scripting.filesystemobject").opentextfile(FN) '利用FSO项目打开临时文件读取内容后关闭
- Str = .readall
- .Close
- End With
- Kill FN '删除临时文件
- Arr = Split(Str, vbNewLine) '将读取到的内容放入数组
- N = 1 '初始化行号
- For I = LBound(Arr) To UBound(Arr) '循环数组各项
- If LCase(Arr(I)) Like "*physical address*:*" Then '如果含有物理地址关键字,则
- Cells(N, 1) = Trim(Split(Arr(I), ":")(1)) '提取出物理地址放入当前循环到的单元格中
- N = N + 1 '下移一行
- ElseIf LCase(Arr(I)) Like "*description*:*" Then '如果含有网卡信息关键字,则
- Cells(N, 1) = Trim(Split(Arr(I), ":")(1)) '提取网卡信息放入当前循环到的单元格中
- N = N + 1 '下移一行
- End If
- Next I
- End Sub
本段代码不会跳出DOS窗口,但需用到临时文件. |