VBA×WMIでリモートPCのスペックを取得する ― 読み取り専用の資産棚卸しとして安全に使う

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

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。旧記事の内部style_promptと重複H1を除去し、WMIを読み取り専用の資産情報収集に限定する形へ整理しました。大量PCではタイムアウトや権限エラーを前提に、1台ごとの失敗を記録して処理を継続する設計を推奨します。

検証ステータス:✅ WMIクラスと読み取り構成を再確認

VBAからWMIへ接続すると、Windows PCのOS、CPU、物理メモリなどを取得できます。棚卸し用途では「取得だけ」に限定し、サービス変更やプロセス起動などの操作系処理と分離すると安全です。

取得する代表的なクラス

情報 WMIクラス 代表プロパティ
OS Win32_OperatingSystem Caption
CPU Win32_Processor Name
物理メモリ総量 Win32_ComputerSystem TotalPhysicalMemory

最小のVBA例

Option Explicit

Sub ReadPcInfo()
    Dim computer As String
    Dim svc As Object
    Dim items As Object
    Dim item As Object

    computer = Range("A2").Value

    On Error GoTo Failed
    Set svc = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & computer & "\root\cimv2")

    Set items = svc.ExecQuery("SELECT Caption FROM Win32_OperatingSystem")
    For Each item In items
        Range("B2").Value = item.Caption
    Next

    Set items = svc.ExecQuery("SELECT Name FROM Win32_Processor")
    For Each item In items
        Range("C2").Value = item.Name
        Exit For
    Next

    Set items = svc.ExecQuery("SELECT TotalPhysicalMemory FROM Win32_ComputerSystem")
    For Each item In items
        Range("D2").Value = Round(CDbl(item.TotalPhysicalMemory) / 1024 ^ 3, 2)
        Exit For
    Next

    Range("E2").Value = "OK"
    Exit Sub

Failed:
    Range("E2").Value = "ERROR " & Err.Number & ": " & Err.Description
End Sub

大量PCではここを改善する

  • 対象PCを配列へ読み込み、結果も配列へ貯めて最後に一括出力する。
  • On Error Resume Nextを広範囲に使わず、1台単位でエラーを記録する。
  • オフラインPCや名前解決失敗を前提にする。
  • WMI/DCOMで必要なファイアウォール・権限が組織ポリシー上許可されているか確認する。
  • 「ドメイン管理者で実行すればよい」とせず、棚卸しに必要な最小権限を使う。

WMIだけで全資産情報を取れるとは限らない

Microsoft Storeアプリ、ユーザー単位アプリ、クラウド管理情報などは別の取得経路が必要です。PCスペック収集とソフトウェア資産管理を一つのマクロへ詰め込まず、目的ごとに情報源を分けます。

この記事の更新履歴

  • 2026-09-14 追加:代表WMIクラス、読み取り専用の最小例、最小権限とエラー記録の注意を追加。
  • 2026-09-14 変更:「高速化」中心の記事から、安全なPC資産棚卸しの設計へ再構成。
  • 2026-09-14 削除:内部style_prompt、本文H1、未検証ドラフト表記、ドメイン管理者利用を安易に推奨する記述、不要なSleep API宣言を削除。

文書情報

記事タイトル
VBA×WMIでリモートPCのスペックを取得する ― 読み取り専用の資産棚卸しとして安全に使う
作成日
更新日
Source URL
https://papanda925.com/?p=5724

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

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