■ 最新の投稿

VBA:『WbemScripting.SWbemLocator』参照設定 vs. 非参照設定(CreateObject)の違い

VBAでは、参照設定する方法と、しない(遅延バインディング)で CreateObjectAs Objectを使う方法があります。

🔷 WbemScripting.SWbemLocator とは?

PCのシステム情報・ハードウェア情報 を取得するための入口オブジェクト。
たとえば「CPU情報」「メモリ容量」「OS名」「ネットワーク設定」などをVBAから取得できます。

例: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_OperatingSystemOS名・バージョン・インストール日など
Win32_ProcessorCPU名・コア数・クロックなど
Win32_LogicalDiskドライブの空き容量など
Win32_NetworkAdapterConfigurationIPアドレスなど
Win32_ComputerSystemメモリ、ユーザー名、メーカーなど

◆参照設定あり vs. 非参照設定(CreateObject)

項目参照設定あり参照設定(CreateObject)
補完(IntelliSense)あり ✅なし ❌
実行速度速い ✅やや遅い ❌
配布注意必要 ❌安心 ✅(参照設定の誘導なくとも、コードのみ配布できる)
安定性高い ✅やや不安定(バージョン依存)❌

「補完」とはVBA記載中に、ピリオドを押すとプロパティやメソッドが選択できる機能のことです。これは、便利ですよね。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です