代码之家  ›  专栏  ›  技术社区  ›  alfjorgen

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

  •  6
  • alfjorgen  · 技术社区  · 16 年前

    在AM中,通过OLE使用MS Word从我的应用程序生成文档。我想让安装了msoffice2007sp2的用户能够将文档保存为pdf。此选项仅在SP2中可用,如果未安装Service Pack,则应隐藏此选项(当然也适用于MS Office以前版本的用户)。

    这些信息在任何地方都可用吗,比如在注册表或任何配置文件中?

    6 回复  |  直到 12 年前
        1
  •  4
  •   Shoban    16 年前

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

    Office版本存储在注册表中

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

    Office 2003和2007的值12.0发生变化。这把钥匙有一个号码。我想检查这个号码是否有不同的版本(带/不带sp1/sp2),看看sia是否有差异。

        2
  •  2
  •   mklein    15 年前

    对于应用于各个Service Pack的实际版本信息,请查看此隐藏良好的KB条目:

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

        3
  •  1
  •   irgendwienet    16 年前

    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
    
        4
  •  1
  •   Tim Cooper    14 年前

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

    hkey_local_machine\software\microsoft\windows\currentversion\installer\userdata\s-1-5-18\products\00002109300000000000000f01fec\patches\6d6c63b08d5ffae4fb4934672a03dab5

        5
  •  1
  •   CuberChase    12 年前

    好的,这有点晚了,但是您可以直接从vba确定服务包,而不必弄乱注册表。显然你需要更新它作为微软更新办公室。

    使用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
    
        6
  •  0
  •   Sid    12 年前

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

    “12.0.6425.1000”

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

    推荐文章