2011-04-10 73 views
4

我的VB.NET(3.5)應用程序生成Excel報告。通過編程識別Excel版本

較新版本的Excel支持Office Open XML文件格式,而舊版本則不支持。

我希望我的應用程序能夠識別在本地計算機上安裝了哪個版本的Excel,並使用不同的方法生成報告(較新版本:通過生成XML文件。舊版本:利用Excel自動化) 。

如何識別安裝在本地機器上的Excel版本?

回答

3

你可以看看下面的註冊表項之一:它

HKEY_USERS\.DEFAULT\Software\Microsoft\Office\11.0\Excel 
HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel 

你應該尋找鑰匙的存在,以「創先爭優」,你可以安裝的Office 2003,並Visio 2007的一邊,所以這兩個鍵會存在,但只有一個將有一個Excel子項:

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0 
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0 

數/版本對應關係

  • 辦公室9:Office 2000的
  • 辦公室10:Office XP的(第一個版本,支持XML格式的工作表)
  • 辦公室11:Office 2003中
  • 辦公室12:Office 2007的
  • 辦公室14:Office 2010中(有趣的事實,13是跳過)
+0

這是一個良好的開端!在這臺機器上,我有Visio 2003和Excel 2002.我看到HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 10.0 \ Excel存在,但HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 11.0 \ Excel沒有。 – 2011-04-10 15:40:56

4

你可以打開一個Excel的實例,並檢查版本:

Dim appExcel As Object 
appExcel = CreateObject("Excel.Application") 
With appExcel 
    Debug.Print(Val(.application.version)) 
    .quit() 
    appExcel = Nothing 
End With 
+0

這是正確的答案。使用註冊表是不可靠的。 – smirkingman 2014-06-04 09:24:41