excel - 如何以编程方式区分 Excel 2019 和 2016?
问题描述
我维护了一个诊断程序,它以编程方式确定 MS Office 应用程序的版本,包括 Excel 和 Word。它适用于 MS Office 版本 2003、2007、2010、2013 和 2016。但现在我发现它错误地将 MS Office 2019 应用程序报告为 MS Office 2016。
八年前,MA Hanin 发布了一个类似的问题:
mathieu 的回复(接受的答案)与用于在注册表中识别 MS Office 与产品版本的相关数字。例如,数字 14.0 对应于 Office 2010。Doug Glancy 直接使用打印 Excel 应用程序对象的 version 属性的 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 的替代方法?
解决方案
是的,v16 可以是 2016 或 2019
这适用于我的版本。
:GetOfficeVer
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs% @echo off
>>%vbs% echo Option Explicit ' Enforce variable declaration
>>%vbs% echo Dim oShell
>>%vbs% echo Dim lOfficeVersion
>>%vbs% echo Set oShell = CreateObject("WScript.Shell")
>>%vbs% echo On Error Resume Next
>>%vbs% echo lOfficeVersion = GetOfficeVersionNumber()
>>%vbs% echo MsgBox "OfficeVersion = " ^& lOfficeVersion
>>%vbs% echo Function GetOfficeVersionNumber()
>>%vbs% echo GetOfficeVersionNumber = ""
>>%vbs% echo Dim sTempValue
>>%vbs% echo sTempValue = oShell.RegRead("HKCR\Excel.Application\CurVer\")
>>%vbs% echo If Len(sTempValue) ^> 2 Then GetOfficeVersionNumber = Replace(Right(sTempValue, 2), ^".^", ^"^")
>>%vbs% echo End Function
cscript //nologo %vbs%
pause
if exist %vbs% del /f /q %vbs%
endlocal
goto :EOF
推荐阅读
- postgresql - 是否可以将 Postgresql 数据库从 Amazon RDS 复制到另一个 Amazon RDS?
- android - ListView ArrayAdapter 没有从 SQLite 获得任何数据
- python - 在电子表格上添加行超过 100 秒的用户配额
- xamarin - Xamarin Forms + MvvmCross 平台渲染器问题
- python - 在 python 3 中的选择查询上使用 fetchone,语法混乱
- date - DataPrep - 查找第一个日期
- php - laravel 中的 hasManyThrough 关系更新失败
- javascript - 替换javascript中的样式值
- mysql - MySQL查询酒店房间可用性
- postgresql - Postgres 查询报告