VBA(Visual Basic for Applications)を使うことで、ユーザー名やコンピュータ名、OSの情報、CPU・メモリ・IPアドレスなど、パソコンに関する様々な情報を一括で取得することができます。
この記事では、VBAコードとその説明を含めて紹介します。
取得できる情報一覧
以下のような情報を自動で取得できます。
- ログインユーザー名、ドメイン名、コンピュータ名
- OSの種類・バージョン・起動時間
- CPU情報、メモリ容量、BIOSシリアル番号
- MACアドレス・IPアドレス
- Excel(Office)のバージョン・インストールパス
前提:WMIライブラリの設定
このコードでは、**WMI(Windows Management Instrumentation)**を使用するため、VBAエディタで以下の設定をしてください。
- Excelを開いて
Alt + F11
でVBAエディタを開く - メニューから「ツール」→「参照設定」
- 「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
...
応用:ログファイルとして保存したい場合
表示するだけでなく、テキストファイルとして保存したい場合も対応可能です。ご希望があればそのコードも紹介します!
必要に応じて、レジストリ情報やインストール済みソフト一覧なども取得できます。
もっと情報を追加したい方は、ぜひコメントしてください!
コメント