WMIは Windows Management Instrumentation のことで、言ってみれば「Windowsの情報を似た方法で簡単に取得できるもの」と言えば分かりやすいだろうか。

PowerShellを使っていてWMIと出会ったが、WSHなどからでも呼び出せる。ということは、VBAからも呼び出せるということだ。
利用するにはオブジェクトをクリエイトするのもいいが、遅延バインディングはあまり趣味ではないので参照設定を行う。参照するのは[Micorosoft WMI Scripting V1.2 Library]だ。バージョンはこの記事を書いた時点であるため、利用されている方とは若干バージョンは違うかも知れない。

ソースコード等は別途準備するが、簡単に言ってしまうと
・WMIにクエリー(SQL文)を投げると、情報が返却される。
・上記クエリーに書くテーブル(FROMの後に記載するもの)次第でいろいろと取れる情報が変わる。

特に後者、テーブルに該当するものがえらく多い。一覧でもないかと探したが、見つけられていない。オブジェクトから一覧を引き抜けるか試してみようと思う。
例えばどんなものが使えるかというと・・
・Win32_OperatingSystem
・Win32_BIOS
・Win32_Processor
・Win32_PhysicalMemory
・Win32_LogicalDisk
・Win32_NetworkAdapter
・Win32_QuickFixEngineering
・Win32_SoftwareFeature

など。NULLが返ってきたり、Arrayで返ってきたりもするので、何が返ってきても受けられるように工夫も必要である。

これを使えば「PCの情報を引き抜くツール」も作れそうであるし、現在仕事で作成中でもある。