excel - vba Excel 中的 Office 版本和操作系统错误

标签 excel vba excel-365

我正在使用 Windows 11 在 VBA Excel 365 中运行此代码

Sub test()
Dim sBuild As String, sOP As String, sVersion As String

sBuild = Application.Build
sOP = Application.OperatingSystem
sVersion = Application.Version
MsgBox "Operating System " & sOP & " with Office version " & sVersion & " Build " & sBuild

End Sub
但是,我收到此消息“操作系统 Windows(64 位)NT 10.00 和 Office 版本 16.0 Build 15028”
属性 Application.Version 和 Application.OperatingSystem 显示的结果与我在 Excel 2016 中运行并使用 Windows 10 时显示的结果相同。
有什么建议可以获取真正的 Office 和 Windows 版本吗?
谢谢你。
曼努埃尔

最佳答案

上述评论中的此链接适用于 Office (Check the application version in modern office)。
我在 Windows 上使用它:

Function GetWindowsInfo() As String
  Dim oShell As Object
  Set oShell = CreateObject("WScript.Shell")
  Dim RegKeyProduct As String
  RegKeyProduct = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName"
  Dim ProductName As String
  ProductName = oShell.RegRead(RegKeyProduct)
  Dim VersionBuildNumbers(1 To 4) As Variant
  Dim RegKeyMajor As String
  RegKeyMajor = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentMajorVersionNumber"
  VersionBuildNumbers(1) = oShell.RegRead(RegKeyMajor)
  Dim RegKeyMinor As String
  RegKeyMinor = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentMinorVersionNumber"
  VersionBuildNumbers(2) = oShell.RegRead(RegKeyMinor)
  Dim RegKeyBuild As String
  RegKeyBuild = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentBuildNumber"
  VersionBuildNumbers(3) = oShell.RegRead(RegKeyBuild)
  If VersionBuildNumbers(3) >= 22000 Then
    ProductName = Replace(ProductName, "10", "11")
  End If
  Dim RegKeyUBR As String
  RegKeyUBR = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\UBR"
  VersionBuildNumbers(4) = oShell.RegRead(RegKeyUBR)
  Dim BuildNumber As String
  BuildNumber = oShell.RegRead(RegKeyBuild) & "." & oShell.RegRead(RegKeyUBR)
  Dim Bitness As String
  Bitness = "32-bit"
  If Len(Environ("PROGRAMFILES(x86)")) Then Bitness = "64-bit"
  GetWindowsInfo = "Microsoft " & ProductName & " (" & Join(VersionBuildNumbers, ".") & ") " & Bitness
End Function

关于excel - vba Excel 中的 Office 版本和操作系统错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71785434/

相关文章:

excel - 打开 XML SDK - 保存模板文件(.xltx 到 .xlsx)

VBA Excel宏删除带有字符串的工作表

vba - Excel VBA 根据多个工作表上的多个标题删除列

Excel - 如何将多列中的分号分隔值拆分为行

excel - Google 表格是否具有与 Excel 中的 WEBSERVICE 和 FILTERXML 等效的功能?

excel - 从水平行或字符串中删除重复值

arrays - 在 VBA 中合并多个数组

Excel - 保存按钮

vba - 从特定模块更改复选框的字体属性 "Strikethrough"不起作用

excel - 如何使用Excel获取与列映射的行值?