我在使用MS Word通过OLE从我的应用程序生成文档。我想为安装了MS Office 2007 SP2的用户提供将文档另存为PDF的功能。这仅在SP2中可用,如果未安装Service Pack,则应隐藏该选项(当然也适用于以前版本的MS Office用户)。
这些信息是否可在任何地方使用,例如在注册表或任何配置文件中?
答案 0 :(得分:4)
找不到任何对你有用的东西,但这里有一些你可能会觉得有用的东西。
Office版本存储在注册表中
HKEY_LOCAL_MACHINE \Software\Microsoft\Office\12.0\Common\productVersion
office 2003和2007的值12.0更改。此键有一个数字。我想检查这个号码是否有不同的版本(有/没有SP1 / SP2),看看是否有差异。
答案 1 :(得分:2)
对于适用于各个服务包的实际版本信息,请查看此隐藏的kb条目:
答案 2 :(得分:1)
Microsoft提供了不同的插件来提供打印到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及更高版本,则为文件的值。