【发布时间】:2020-06-27 00:19:00
【问题描述】:
我维护了一个诊断程序,它以编程方式确定 MS Office 应用程序的版本,包括 Excel 和 Word。它已在 MS Office 版本 2003、2007、2010、2013 和 2016 上正常工作。但现在我发现它错误地将 MS Office 2019 应用程序报告为 MS Office 2016。
八年前,M. A. Hanin 发布了一个类似的问题:
Identifying Excel version programmatically
mathieu 的回复,接受的答案,用于在注册表中识别 MS Office 与产品版本的相关数字。例如,数字 14.0 对应于 Office 2010。Doug Glancy 直接用打印 Excel 应用程序对象的版本属性的 VB 代码解决了这个问题:
https://docs.microsoft.com/en-us/office/vba/api/excel.application.version
这是一个 VB 脚本,用于诊断系统安装了哪个版本的 Excel(如果有):
On Error Resume Next
Set excelApp = CreateObject("Excel.Application")
If Err.Number <> 0 Then
WScript.Echo "Excel is not installed"
Else
Wscript.Echo "Excel Version: " & excelApp.Version
End If
该诊断忠实地报告了与 2011 年的帖子一致的 MS Office 版本。从那时起,它报告 Office 2013 为 15.0,Office 2016 报告为 16.0。不过,最近我惊讶地发现它还报告了 Office 2019 的 16.0 . 那是不对的! 2016 年和 2019 年的功能集明显不同,因此不应将它们混为一谈:
是否有其他方法可以以编程方式区分 Office 2016 和 Office 2019?
【问题讨论】:
-
您是否尝试过只运行一项新功能而不是 CreateObject?例如。连接而不是连接?如果 Err.Number 0 则不是 Excel 2019。
-
@TylerH,我认为作为临时解决方法可以很好地执行。但是,一旦 MSO 2022 发布,这不会中断吗?
-
@Snaps-a-Lot Office 2019 将成为 Office 的最后一个独立版本。我记得当他们宣布 2019 年的存在时读过这篇文章,这听起来很可能考虑到 Office 2019 仅获得 2 年的扩展支持,而不是以前版本通常的 5 年。这意味着 Office 2016 和 Office 2019 都将在 2025 年“正式”消亡(届时 Office 365 将存在 14 年)。如果微软改变主意并发布 Office 2022(这是一个很大的假设),它也不太可能仍被标记为主要版本 16.0。