📜  vba 检查 32 位或 64 位 - VBA (1)

📅  最后修改于: 2023-12-03 15:20:57.832000             🧑  作者: Mango

VBA 检查 32 位或 64 位

当使用 VBA 开发应用程序时,可能需要检查操作系统是32位还是64位,以保证应用程序能够正确地运行。

代码示例

下面是使用 VBA 在 Windows 操作系统上检测位数的示例代码。

Private Function Is64Bit() As Boolean
    Dim os As String
    Dim regType As Long
    Dim value As Variant
    Dim shell As Object
    
    '获取操作系统信息
    os = Environ("PROCESSOR_ARCHITECTURE")
    If os = "x86" Then
        '操作系统是32位
        Is64Bit = False
    Else
        '操作系统是64位
        regType = &H80000002 '64位系统注册表类型
        Set shell = CreateObject("WScript.Shell")
        value = shell.RegRead("HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0\", "Identifier", regType)
        If value = "Intel64" Or value = "AMD64" Then
            Is64Bit = True
        Else
            Is64Bit = False
        End If
    End If
End Function
解析
  1. 使用 Environ() 函数获取当前进程的环境变量,其中 PROCESSOR_ARCHITECTURE 环境变量表示操作系统的处理器架构。
  2. 如果 PROCESSOR_ARCHITECTURE 等于 "x86",则说明操作系统是32位,返回 False
  3. 如果 PROCESSOR_ARCHITECTURE 不等于 "x86",则说明操作系统是64位,需要进一步检查。
  4. 使用 WScript.Shell 对象访问系统注册表,根据 CPU 标识符来判断操作系统是32位还是64位。
  5. 如果 CPU 标识符为 "Intel64" 或 "AMD64",则返回 True,否则返回 False
注意事项
  • 测试环境为 Windows 10 64位操作系统。
  • 对于32位应用程序,需要将上述代码作出相应修改。