Хорошо, это немного поздно, но вы можете определить пакет обновления непосредственно из VBA без необходимости связываться с реестром. Очевидно, вам нужно будет обновить его, так как Microsoft обновляет Office.
Используя страницы поддержки для различных версий Office, вы можете получить номер сборки и использовать функцию для определения пакета обновления и т. Д. Office 2007 показывает небольшие расхождения между различными приложениями в офисе, поэтому вам придется настраивать при необходимости .
Тогда для Excel Office 2007 + будет работать следующая функция:
Function DetermineExcelServicePack() As String
Dim sReturn As String
If Application.Version = "12.0" Then
If Application.Build < 6214 Then
sReturn = "Excel 2007, RTM"
ElseIf Application.Build < 6425 Then
sReturn = "Excel 2007, SP1"
ElseIf Application.Build < 6611 Then
sReturn = "Excel 2007, SP2"
Else
sReturn = "Excel 2007, SP3"
End If
ElseIf Application.Version = "14.0" Then
If Application.Build < 6029 Then
sReturn = "Excel 2010, RTM"
ElseIf Application.Build < 7015 Then
sReturn = "Excel 2010, SP1"
Else
sReturn = "Excel 2010, SP2"
End If
ElseIf Application.Version = "15.0" Then
sReturn = "Excel 2013, RTM"
Else
sReturn = "This version (" & Application.Version & "-" & Application.Build & ") is not supported by this function"
End If
DetermineExcelServicePack = sReturn
End Function