如何确定是否已安装MS Office 2007 SP2?

时间:2010-03-25 10:00:56

标签: ms-office

我在使用MS Word通过OLE从我的应用程序生成文档。我想为安装了MS Office 2007 SP2的用户提供将文档另存为PDF的功能。这仅在SP2中可用,如果未安装Service Pack,则应隐藏该选项(当然也适用于以前版本的MS Office用户)。

这些信息是否可在任何地方使用,例如在注册表或任何配置文件中?

6 个答案:

答案 0 :(得分:4)

找不到任何对你有用的东西,但这里有一些你可能会觉得有用的东西。

Office版本存储在注册表中

HKEY_LOCAL_MACHINE \Software\Microsoft\Office\12.0\Common\productVersion

office 2003和2007的值12.0更改。此键有一个数字。我想检查这个号码是否有不同的版本(有/没有SP1 / SP2),看看是否有差异。

答案 1 :(得分:2)

对于适用于各个服务包的实际版本信息,请查看此隐藏的kb条目:

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

答案 2 :(得分:1)

Microsoft提供了不同的插件来提供打印到PDF功能:

  • 2007 Microsoft Office加载项:Microsoft另存为PDF或XPS
  • 2007 Microsoft Office加载项:Microsoft另存为PDF
  • 2007 Microsoft Office加载项:Microsoft另存为XPS(不附带PDF支持)

和SP2也会安装这些Addins。

我一直在寻找一种方法来测试是否安装了PDF功能。 仅当在计算机上安装PDF功能(通过加载项或SP)时,才会显示以下文件:

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

答案 3 :(得分:1)

更新安装在以下注册表项中。

  

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \ Installer程序\的UserData \ S-1-5-18 \产品\ 00002109030000000000000000F01FEC \补丁\ 6D6C63B08D5FFAE4FB4934672A03DAB5

答案 4 :(得分:1)

好的,这有点晚了,但你可以直接从VBA确定Service Pack,而不必乱用注册表。显然,当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

答案 5 :(得分:0)

以编程方式检查MSO.DLL文件的版本是否大于或等于:

  

&#34; 12.0.6425.1000&#34;

如果安装了SP2及更高版本,则为文件的值。