VBA/WMIでリモートPC情報を集計する ― 最小権限・失敗記録・一括出力の設計

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Win32_OperatingSystem、Win32_Processor、Win32_ComputerSystemの読み取り用途を見直し、旧記事のDomain Admin推奨、疑似タイムアウト説明、不要なSleep依存を修正しました。

検証ステータス:✅ Windows WMI構造確認済み

ExcelのA列にPC名を並べ、WMIからOS・CPU・物理メモリを取得する仕組みは小規模な棚卸しに使えます。ただし「動けばよい」より、読み取り専用・最小権限・失敗しても次へ進めることを重視します。

取得対象は3クラスに分ける

情報 WMIクラス 主なプロパティ
OS Win32_OperatingSystem Caption / Version
CPU Win32_Processor Name
物理メモリ Win32_ComputerSystem TotalPhysicalMemory

Domain Adminを前提にしない

旧記事は「ドメイン管理者推奨」としていましたが、資産情報取得のために広い管理権限を常用するのは避けます。対象PCで必要なWMI名前空間とリモート管理権限だけを持つ専用実行主体を検討します。

GetObjectに疑似タイムアウトを付けたつもりにならない

単にOn Error Resume NextやSleep 10を入れても、WMI接続のタイムアウト制御にはなりません。大量PCでは、事前疎通、1台単位の経過時間記録、一定時間で別プロセス側から打ち切る設計などを検討します。

結果は配列へ貯めて一括出力

セルへ1項目ずつ書くより、結果配列にOS/CPU/RAM/Statusを格納し、最後にResize(...).Value = resultsで書き出す方がExcel側のI/Oを減らせます。

  • PC名が空ならスキップする。
  • 接続失敗時はErr.Descriptionだけでなく取得時刻も残す。
  • 変更系WMIメソッドは同じマクロに混ぜない。
  • 対象台数が増えたらPowerShell/CIMや管理製品と比較する。

公式情報

この記事の更新履歴

  • 2026-09-14 追加:最小権限、失敗記録、疑似タイムアウトへの注意を追加。
  • 2026-09-14 変更:広い管理者権限前提の記事から、読み取り専用棚卸しの設計へ変更。
  • 2026-09-14 削除:内部style_prompt、本文H1、Domain Admin推奨、Sleepでネットワーク負荷やタイムアウトを制御できるという説明を削除。

文書情報

記事タイトル
VBA/WMIでリモートPC情報を集計する ― 最小権限・失敗記録・一括出力の設計
作成日
更新日
Source URL
https://papanda925.com/?p=5624

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました