2010-03-25 69 views
6

在使用MS Word通過OLE從我的應用程序生成文檔。我想給安裝了MS Office 2007 SP2的用戶提供將文檔保存爲PDF的功能。這僅在SP2中可用,並且如果未安裝Service Pack(當然也適用於以前版本MS Office的用戶),應該隱藏此選項。如何確定MS Office 2007 SP2是否已安裝?

此信息在任何地方都可用,如在註冊表或任何配置文件中?

回答

4

找不到對您有用的東西,但這裏有些東西可能會對您有用。

Office版本存儲在註冊表

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

價值爲Office 2003和2007年這關鍵有一些變化12.0。我認爲檢查這個數字爲不同的版本(帶/不帶SP1/SP2),看看是否有差異。

+0

謝謝!我會嘗試的! – alfjorgen 2010-03-25 11:02:09

+0

有區別!非常感謝! – alfjorgen 2010-03-25 11:06:15

+0

alfjorgen!對於上帝的愛有什麼區別!? – Dlongnecker 2011-08-26 20:21:04

1

有來自微軟不同的插件,提供一種打印到PDF功能:

  • 2007 Microsoft Office加載項:Microsoft Save as PDF或XPS
  • 2007 Microsoft Office加載項:Microsoft另存爲PDF
  • 2007 Microsoft Office加載項:Microsoft另存爲XPS(不附帶PDF支持)

和SP2也安裝這些加載項。

我正在尋找一種方法來測試PDF功能是否安裝。

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

在x64系統上,您必須查看「Program Files(x86)」文件夾。即使在不同的語言版本中也可以使用以下基本路徑(在.net中):Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86) – irgendwienet 2010-06-03 07:31:38

+0

有趣的發現。謝謝! – alfjorgen 2010-06-04 08:02:30

1

更新被安裝在以下注冊表項:如果PDF功能已安裝(由一個附加在或SP)的計算機上 以下文件是僅存在。

HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的Windows \ CurrentVersion \ Installer程序\的UserData \ S-1-5-18 \產品\ 00002109030000000000000000F01FEC \補丁\ 6D6C63B08D5FFAE4FB4934672A03DAB5

1

好吧,這是有點晚了,但你可以直接從VBA確定服務包不必須弄亂註冊表。很明顯,您需要在Microsoft更新Office時更新它。

使用不同版本關閉辦公室的支持頁面,你可以得到的版本號,並使用一個函數來確定服務包等Office 2007的顯示範圍內的辦公室不同的應用程序之間細微的差異,所以你不得不爲調整需要。

則功能如下將做的工作爲Excel辦公室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 
0

以編程方式檢查MSO.DLL文件的版本是否大於或等於:

「12.0.6425.1000」

這是如果安裝了SP2和上述用於文件中的值。

相關問題