OSの情報を取得

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.00Windows 10
Windows (32-bit) NT 6.02Windows 8
Windows (32-bit) NT 6.01Windows 7