VBAでPC・ユーザー情報を一括取得する方法【完全ガイド】


VBA(Visual Basic for Applications)を使うことで、ユーザー名やコンピュータ名、OSの情報、CPU・メモリ・IPアドレスなど、パソコンに関する様々な情報を一括で取得することができます。

この記事では、VBAコードとその説明を含めて紹介します。


取得できる情報一覧

以下のような情報を自動で取得できます。

  • ログインユーザー名、ドメイン名、コンピュータ名
  • OSの種類・バージョン・起動時間
  • CPU情報、メモリ容量、BIOSシリアル番号
  • MACアドレス・IPアドレス
  • Excel(Office)のバージョン・インストールパス

前提:WMIライブラリの設定

このコードでは、**WMI(Windows Management Instrumentation)**を使用するため、VBAエディタで以下の設定をしてください。

  1. Excelを開いて Alt + F11 でVBAエディタを開く
  2. メニューから「ツール」→「参照設定」
  3. Microsoft WMI Scripting Library」にチェックを入れてOK

VBAコード:パソコン情報を一括取得

以下のコードを標準モジュールに貼り付けて、GetSystemInfo を実行してください。

Sub GetSystemInfo()
    Dim wmi As Object
    Dim osInfo As Object, cpuInfo As Object, biosInfo As Object
    Dim netInfo As Object, driveInfo As Object, memInfo As Object
    Dim nic As Object
    Dim msg As String

    Set wmi = GetObject("winmgmts:\\.\root\cimv2")

    '--- ユーザー/PC基本情報 ---
    msg = "【ユーザー/PC基本情報】" & vbCrLf
    msg = msg & "ユーザー名: " & Environ("Username") & vbCrLf
    msg = msg & "ドメイン名: " & Environ("UserDomain") & vbCrLf
    msg = msg & "コンピュータ名: " & Environ("ComputerName") & vbCrLf
    msg = msg & "ユーザープロファイル: " & Environ("UserProfile") & vbCrLf
    msg = msg & "システムドライブ: " & Environ("SystemDrive") & vbCrLf
    msg = msg & "Windowsディレクトリ: " & Environ("Windir") & vbCrLf & vbCrLf

    '--- OS情報 ---
    For Each osInfo In wmi.ExecQuery("Select * from Win32_OperatingSystem")
        msg = msg & "【OS情報】" & vbCrLf
        msg = msg & "OS名: " & osInfo.Caption & vbCrLf
        msg = msg & "バージョン: " & osInfo.Version & vbCrLf
        msg = msg & "ビルド番号: " & osInfo.BuildNumber & vbCrLf
        msg = msg & "起動時間: " & osInfo.LastBootUpTime & vbCrLf & vbCrLf
        Exit For
    Next

    '--- CPU情報 ---
    For Each cpuInfo In wmi.ExecQuery("Select * from Win32_Processor")
        msg = msg & "【CPU情報】" & vbCrLf
        msg = msg & "名前: " & cpuInfo.Name & vbCrLf
        msg = msg & "クロック数: " & cpuInfo.MaxClockSpeed & " MHz" & vbCrLf & vbCrLf
        Exit For
    Next

    '--- メモリ情報 ---
    For Each memInfo In wmi.ExecQuery("Select * from Win32_ComputerSystem")
        msg = msg & "【メモリ情報】" & vbCrLf
        msg = msg & "物理メモリ: " & Format(memInfo.TotalPhysicalMemory / 1024 / 1024 / 1024, "0.00") & " GB" & vbCrLf & vbCrLf
        Exit For
    Next

    '--- BIOS情報 ---
    For Each biosInfo In wmi.ExecQuery("Select * from Win32_BIOS")
        msg = msg & "【BIOS情報】" & vbCrLf
        msg = msg & "シリアル番号: " & biosInfo.SerialNumber & vbCrLf & vbCrLf
        Exit For
    Next

    '--- ネットワーク情報 ---
    For Each nic In wmi.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True")
        msg = msg & "【ネットワーク情報】" & vbCrLf
        msg = msg & "MACアドレス: " & nic.MACAddress & vbCrLf
        If Not IsNull(nic.IPAddress) Then
            msg = msg & "IPアドレス: " & Join(nic.IPAddress, ", ") & vbCrLf
        End If
        msg = msg & vbCrLf
        Exit For
    Next

    '--- Office情報(Excel)---
    msg = msg & "【Office情報(Excel)】" & vbCrLf
    msg = msg & "Excelバージョン: " & Application.Version & vbCrLf
    msg = msg & "Excelインストールパス: " & Application.Path & vbCrLf

    '--- 結果を表示 ---
    MsgBox msg, vbInformation, "システム情報"
End Sub

実行例(出力されるメッセージ)

実行すると、以下のような情報がポップアップで表示されます。

【ユーザー/PC基本情報】
ユーザー名: taro
ドメイン名: MYPC
コンピュータ名: TARO-PC
ユーザープロファイル: C:\Users\taro

【OS情報】
OS名: Microsoft Windows 10 Pro
バージョン: 10.0.19045
...

【CPU情報】
名前: Intel(R) Core(TM) i5-xxxx
クロック数: 2400 MHz

...

応用:ログファイルとして保存したい場合

表示するだけでなく、テキストファイルとして保存したい場合も対応可能です。ご希望があればそのコードも紹介します!


必要に応じて、レジストリ情報やインストール済みソフト一覧なども取得できます。
もっと情報を追加したい方は、ぜひコメントしてください!


コメント

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