VBAからWMI(Windows Management Instrumentation)を利用すると、ネットワーク上のリモートPCからOS名、コンピューター名、プロセッサ情報、メモリ容量などのシステム構成情報をプログラム経由で取得できます。社内PCの簡易インベントリ作成や資産管理の自動化に活用できます。
事前準備と前提条件
リモートPCのWMI情報を取得するには、以下の条件を満たしている必要があります。
- 管理者権限: 実行元のアカウントが対象リモートPCの管理者権限(Administrator権限)を保持していること。
- ネットワーク疎通とファイアウォール: リモートPC側で「Windows Management Instrumentation (WMI)」および RPC 関連の通信ポート(TCP 135、動的RPCポート)が許可されていること。
- ネットワーク環境: 同一ドメイン環境、または適切な認証設定がなされたワークグループ環境であること。
VBAサンプルコード
以下は、指定したPC名(またはIPアドレス)に対してWMI接続を行い、コンピューター名・OS名・物理メモリサイズを取得するVBAコード例です。
Sub GetRemoteSystemInfo()
Dim strComputer As String
Dim objWMIService As Object
Dim colItems As Object
Dim objItem As Object
' 対象端末のホスト名またはIPアドレス(ローカルの場合は ".")
strComputer = "REMOTE-PC-01"
On Error Resume Next
' WMIサービスへの接続
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
If Err.Number <> 0 Then
MsgBox "リモートPCへの接続に失敗しました: " & Err.Description, vbCritical, "接続エラー"
Err.Clear
Exit Sub
End If
On Error GoTo 0
' OS情報の取得 (Win32_OperatingSystem)
Set colItems = objWMIService.ExecQuery("SELECT Caption, CSName, TotalVisibleMemorySize FROM Win32_OperatingSystem")
For Each objItem In colItems
Debug.Print "コンピューター名: " & objItem.CSName
Debug.Print "OS名: " & objItem.Caption
Debug.Print "可視物理メモリ: " & Round(objItem.TotalVisibleMemorySize / 1024 / 1024, 2) & " GB"
Next
' メモリ・システム情報の取得 (Win32_ComputerSystem)
Set colItems = objWMIService.ExecQuery("SELECT Model, Manufacturer, TotalPhysicalMemory FROM Win32_ComputerSystem")
For Each objItem In colItems
Debug.Print "メーカー: " & objItem.Manufacturer
Debug.Print "モデル: " & objItem.Model
If Not IsNull(objItem.TotalPhysicalMemory) Then
Debug.Print "物理メモリ総量: " & Round(CDbl(objItem.TotalPhysicalMemory) / 1024 / 1024 / 1024, 2) & " GB"
End If
Next
' 後始末
Set colItems = Nothing
Set objWMIService = Nothing
End Sub
安全に検証する順序
- まずは
strComputer = "."(ローカルPC)で実行し、正常に情報が取得できるか試します。 - 次に管理下の検証用リモートPC1台を対象に設定し、接続を確認します。
- 「RPC サーバーを利用できません」等のエラーが出た場合は、リモートPCのファイアウォール設定(WMIの受信許可)や管理者権限を確認します。
- 複数端末へ展開する場合は、エラー処理を組み込んでループ処理を行います。
主なWMIクラスと取得可能項目
- Win32_OperatingSystem: OSバージョン、ビルド番号、インストール日時、最終起動時間
- Win32_ComputerSystem: ドメイン名、製造元、モデル名、全物理メモリ
- Win32_Processor: CPU名称、コア数、論理プロセッサ数
- Win32_LogicalDisk: ディスクドライブの容量、空き領域(DriveType = 3 でローカルディスクを指定)
公式情報
- Microsoft Learn: Windows Management Instrumentation (WMI)
- Microsoft Learn: Win32_OperatingSystem class
この記事の更新履歴
- 2026-09-20 更新: VBAからWMIを利用してリモートPCのシステム構成情報を取得するサンプルコード、事前条件、主要なWMIクラスの解説を追加しました。
- 2026-09-14 更新: リモート接続時の権限・通信条件と段階的な確認手順を追加しました。
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月20日
- 追加WMI経由でリモートPCからOS名やメモリ容量を取得するVBAサンプルコードとエラー処理を追加しました。
- 追加リモート接続に必要な前提条件(管理者権限・ファイアウォール・RPC設定)および主要なWMIクラスの解説を追加しました。

