2011-04-10 129 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