

VBAでは、参照設定する方法と、しない(遅延バインディング)で CreateObject
や As
Objectを使う方法があります。
🔷 WbemScripting.SWbemLocator
とは?
PCのシステム情報・ハードウェア情報 を取得するための入口オブジェクト。
たとえば「CPU情報」「メモリ容量」「OS名」「ネットワーク設定」などをVBAから取得できます。

例:WbemScripting.SWbemLocator
を使った場合
WbemScripting.SWbemLocator
▼参照設定(早期バインディング)
参照設定 → 「Microsoft WMI Scripting V1.2 Library」 を追加します。

Dim locator As SWbemLocator
Dim service As SWbemServices
Dim items As SWbemObjectSet
Dim item As SWbemObject
Set locator = New SWbemLocator
' ローカルPCに接続
Set service = locator.ConnectServer(".", "root\cimv2")
Set items = service.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each item In items
' OSの名前(例:Microsoft Windows 11 Home)
MsgBox item.Caption
Next
▼ 非参照設定(遅延バインディング)
Dim locator As Object
Dim service As Object
Dim items As Object
Dim item As Object
Set locator = CreateObject("WbemScripting.SWbemLocator")
' ローカルPCに接続
Set service = locator.ConnectServer(".", "root\cimv2")
Set items = service.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each item In items
' OSの名前(例:Microsoft Windows 11 Home)
MsgBox item.Caption
Next
◆よく使う WMI クラス一覧
クラス名 | 取得できる情報 |
---|---|
Win32_OperatingSystem | OS名・バージョン・インストール日など |
Win32_Processor | CPU名・コア数・クロックなど |
Win32_LogicalDisk | ドライブの空き容量など |
Win32_NetworkAdapterConfiguration | IPアドレスなど |
Win32_ComputerSystem | メモリ、ユーザー名、メーカーなど |

◆参照設定あり vs. 非参照設定(CreateObject)
項目 | 参照設定あり | 非参照設定(CreateObject) |
---|---|---|
補完(IntelliSense) | あり ✅ | なし ❌ |
実行速度 | 速い ✅ | やや遅い ❌ |
配布 | 注意必要 ❌ | 安心 ✅(参照設定の誘導なくとも、コードのみ配布できる) |
安定性 | 高い ✅ | やや不安定(バージョン依存)❌ |
「補完」とはVBA記載中に、ピリオドを押すとプロパティやメソッドが選択できる機能のことです。これは、便利ですよね。




コメントを残す