Я веду диагностику, которая программно определяет версию приложений MS Office, включая Excel и Word. Он корректно работал для версий MS Office 2003, 2007, 2010, 2013 и 2016. Но теперь я обнаружил, что он неправильно сообщает о приложениях MS Office 2019 как MS Office 2016.
Восемь лет назад М. А. Ханин написал похожий вопрос:
Программная идентификация версии Excel
ответ Мэтью, принятый ответ, коррелированные числа, используемые для идентификации MS Office в реестре по сравнению с версиями продукта. Например, число 14.0 соответствовало Office 2010. Дуг Глэнси непосредственно обратился к вопросу с помощью кода VB, который печатает свойство версии объекта приложения Excel:
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
Диагностическое сообщение достоверно сообщает о версиях MS Office, соответствующих сообщению от 2011 года. С тех пор оно сообщает 15.0 для Office 2013 и 16.0 для Office 2016. Однако недавно я с удивлением обнаружил, что он также сообщает 16.0 для Office 2019 Это просто не правильно! Наборы функций 2016 и 2019 годов четко различаются, поэтому их не следует объединять:
https://support.office.com/en-us/article/what-s-new-in-office-2019-5077cbbe-0d94-44cc-b30e-654e37629b0c?ui=en-US&rs=en-US&ad=US
Есть ли альтернативный способ программно отличить Office 2016 от Office 2019?