vba怎么计算数据(如何获取计算机硬件信息)

计算机信息是一个固定的内容,编程过程中会经常提取计算机信息来进行处理,本节介绍一下如何利用VBA来进行提取计算机信息。

vba怎么计算数据(如何获取计算机硬件信息)(1)

本示例基于Windows操作系统,苹果或Linux系统并不适用,一定分清楚。

下图为提取后的表格,简单举例三个信息,分别是CPU序列号,硬盘信息和网卡MAC地址。

vba怎么计算数据(如何获取计算机硬件信息)(2)

根据新建一个GetObject("Winmgmts:")对象来对操作系统进行信息提取。

它是基于windows系统的系统管理工具WMI。

什么是WMI 呢?

全称为Windows管理规范,英文(Windows Management Instrumentation)

它是一项核心的 Windows 管理技术,用户可以使用 WMI 管理本地和远程计算机。

总之就是用来管理计算机的一个工具,既然是管理计算机的,那它对计算机有十足的了解,所以我们要通过WMI来获取计算机信息就找对了。

vba怎么计算数据(如何获取计算机硬件信息)(3)

下面来看具体代码,一定要收藏。

获取CPU序列号函数:

Public Function GetCpu() 'CPU序列号 Dim cpuInfo, Soi, So, s As Integer, cpuArr() cpuInfo = "" Set Soi = GetObject("Winmgmts:").InstancesOf("Win32_Processor") For Each So In Soi cpuInfo = CStr(So.ProcessorId) ReDim Preserve cpuArr(s) cpuArr(s) = cpuInfo s = s 1 Next If Not VBA.IsArray(cpuArr) Then ReDim cpuArr(0) cpuArr(0) = "" End If GetCpu = cpuArr End Function

获取硬盘信息函数

Function getHde() As String '硬盘信息 Dim HDid, moc, mo Set moc = GetObject("Winmgmts:").InstancesOf("Win32_DiskDrive") For Each mo In moc HDid = HDid & mo.Model & VBA.vbCrLf Next getHde = VBA.Mid(HDid, 1, VBA.Len(HDid) - 1) End Function

获取网卡MAC地址函数:

Function getMAC() As String '网卡地址 Dim Wap, MAC Set Wap = GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration") For Each MAC In Wap If MAC.IPEnabled = True Then getMAC = MAC.MacAddress Exit For End If Next End Function

以上函数都可以独立调用,调用方法如下:

Private Sub CommandButton1_Click() Dim r As Range Set r = Range("D2") With r .Value = GetCpu .Offset(1, 0).Value = getHde .Offset(2, 0).Value = getMAC End With End Sub

重点说一点,如果使用的时候没有返回任何正确信息,或者有报错提示,那么有两个可能。

一是计算机系统版本不同,由于不同时期的操作系统WMI也会有不同,所以找不到硬件信息。

二是WMI 服务最好启动,服务名为“winmgmt”。启动方法 DOS环境下 执行 net start winmgmt 命令重启。停止 WMI 服务使用:winmgmt /kill 或 net stop winmgmt ,最好不要停止服务。

如果想获取更多计算机信息可参考WMI对象使用方法,不过似乎就脱离了Excel VBA内容了。

欢迎关注、收藏


END

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页