Как определить, установлен ли MS Office 2007 SP2?

в am с помощью MS Word через OLE для создания документов из моего приложения. Я хочу предоставить пользователям, у которых установлен MS Office 2007 SP2, возможность сохранять документы в формате PDF. Это доступно только в SP2, и опция должна быть скрыта, если пакет обновления не установлен (и, конечно, также для пользователей предыдущих версий MS Office).

доступна ли эта информация в любом месте, например, в реестре или любом файле конфигурации?

6 ответов


не смог найти ничего полезного для вас, но вот что-то, что вы можете найти полезным.

версия Office хранится в реестре

HKEY_LOCAL_MACHINE \Software\Microsoft\Office.0\Common\productVersion

значение 12.0 изменяется для office 2003 и 2007. У этого ключа есть номер. Я думаю, что проверка этого номера для другой версии (с/без SP1/SP2) и посмотреть, есть ли разница sia.


для фактической версии infos, которые применяются к отдельным пакетам обновления, посмотрите на эту хорошо скрытую запись kb:

http://support.microsoft.com/kb/928116


существуют различные плагины от Microsoft для предоставления функции печати в PDF:

  • 2007 надстройка Microsoft Office: Microsoft Сохранить как PDF или XPS
  • 2007 надстройка Microsoft Office: Microsoft Сохранить как PDF
  • 2007 надстройка Microsoft Office: Microsoft Сохранить как XPS (не поставляется с поддержкой PDF)

и SP2 также устанавливает эти дополнения.

Я искал способ проверить, установлена ли функция PDF или нет. Этот следующий файл присутствует только в том случае, если функция PDF установлена (надстройкой или SP) на компьютере:

C:\Program Files\Common Files\Microsoft Shares\Office12\EXP_PDF.DLL

обновление устанавливается в следующем разделе реестра.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\00002109030000000000000000F01FEC\Patches\6D6C63B08D5FFAE4FB4934672A03DAB5


Ok, это немного поздно, но вы можете определить пакет обновления непосредственно из VBA без необходимости возиться с реестром. Очевидно, вам нужно будет обновить его как Microsoft updates Office.

используя страницы поддержки для разных версий off Office, вы можете получить номер сборки и использовать функцию для определения пакета обновления и т. д. Office 2007 показывает небольшие расхождения между различными приложениями в office, поэтому вам придется настроить как требуемый.

затем функция следующим образом выполнит работу для 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

программно проверьте, является ли версия MSO.DLL-файл больше или равен :

"12.0.6425.1000"

Это значение для файла, если установлен SP2 и выше.