如何在vba中使用wmi?

WMI是个好东西。

 

通过WMI我们可以直接访问操作系统底层的各种信息。

 

通过WMI我们不需要写复杂的API来访问操作系统的各种硬件信息。

 

我们一般使用WMI来访问本地电脑的数据。

 

在VBA中使用WMI访问本地电脑数据的一般步骤是:

 

一、连接WMI服务,获取SWbemServices对象。

 

代码如下:

 

strComputer = “.”
Set objWMIServices = GetObject(“winmgmts:\\” & strComputer & “\root\CIMV2”)

二、使用 ExecQuery方法或者InstancesOf 方法获取SWbemObjectSet集合

 

代码如下:

 

Set colSWbemObjectSet = objWMIServices.InstancesOf(“Win32_Process”)

三、循环遍历SWbemObjectSet集合中的SWbemObject对象

 

代码如下:

 

For Each SWbemObject In colSWbemObjectSet
Debug.Print SWbemObject.Name
Next

通过上述三步基本可以解决各种操作系统硬件数据访问问题。

 

其中Win32_Process 表示系统进程,类似这样的类名可以在这里找到。

 

以下是一个VBA中使用WMI的简单示例,获取所有当前系统的进程名:

 

Sub exceloffice()
‘作者:水星excel
strComputer = “.”
Set objWMIServices = GetObject(“winmgmts:\\” & strComputer & “\root\CIMV2”)
Set colSWbemObjectSet = objWMIServices.InstancesOf(“Win32_Process”)
For Each SWbemObject In colSWbemObjectSet
‘列举进程名
Debug.Print SWbemObject.Name
Next
End Sub

 

       

发表评论