OSの情報を取得する。
WMI(Windows Management Instrumentation)を利用してOS情報(OS種類、バージョン、ビット数など)を取得します。
VBAでWMIから情報を取得するにはSWbemLocatorオブジェクトのConnectServerメソッドを利用してコンピューター上の WMIへ接続することで取得できます。
OS情報は接続したWMIの Win32_OperatingSystemクラス から取得します。
OS情報の取得はApplicationオブジェクトのOperatingSystemプロパティでもOSの情報は取得できますが、注意点としてOperatingSystemプロパティから取得したbit数はOSではなくインストールされているOfficeのbit数で判定されます。
そのためOS自体が64bitであっても、32bit版のOfficeであれば”(32-bit)”、64bit版のOfficeであれば”(64-bit)”と表示され、一見すると正しくないように見えます。
ですのでWMIを利用した方が正確なOSのバージョンを取得でき、また取得できる情報の種類も多いのでOSの情報を取得するのであればWMIを利用した方がいいです。
※一応OperatingSystemプロパティのサンプルコードも掲載しています。
●OS情報取得(WMI)
'*****************************************************************
' OS情報を取得
'*****************************************************************
Sub getOSInfo()
'SWbemLocatorオブジェクトを作成してWMIに接続
Dim oWMI As Object
Set oWMI = CreateObject("WbemScripting.SWbemLocator").ConnectServer
'オブジェクト取得のクエリを実行
Dim oQrySet As Object
Set oQrySet = oWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem")
'OS情報取得
Dim oOS As Object
For Each oOS In oQrySet
Debug.Print "----------------------------------------------------"
Debug.Print "OS : " & oOS.Caption
Debug.Print "OSArchitecture : " & oOS.OSArchitecture
Debug.Print "Manufacturer : " & oOS.Manufacturer
Debug.Print "Version : " & oOS.Version
Debug.Print "BuildNumber : " & oOS.BuildNumber
Debug.Print "SerialNumber : " & oOS.SerialNumber
Debug.Print "CountryCode : " & oOS.CountryCode
Debug.Print "OSLanguage : " & oOS.OSLanguage
Debug.Print "MUILanguages : " & Join(oOS.MUILanguages, ",")
Debug.Print "CurrentTimeZone : " & oOS.CurrentTimeZone
Debug.Print "WindowsDirectory: " & oOS.WindowsDirectory
Debug.Print "SystemDirectory : " & oOS.SystemDirectory
Debug.Print "SystemDevice : " & oOS.SystemDevice
Next
End Sub
■実行結果
●OS情報取得(OperatingSystemプロパティ)
'******************************************************************
' OS情報(OS名、ビット、バージョン)を取得
'******************************************************************
Sub getOS()
Debug.Print Application.OperatingSystem
End Sub
■実行結果
OperatingSystemプロパティの戻り値とOSのバージョンは以下の通りです。
※2021年12月の時点で企業向けの有償サポートを含め、サポートが終了していないWindowsの情報のみを記載しています。
戻り値 | OS種類 |
Windows (32-bit) NT 10.00 | Windows 10 |
Windows (32-bit) NT 6.02 | Windows 8 |
Windows (32-bit) NT 6.01 | Windows 7 |