通过编程识别Excel版本

5

我的VB.NET(3.5)应用程序生成Excel报告。

新版本的Excel支持Office Open XML文件格式,而旧版本则不支持。

我希望我的应用程序可以识别本地计算机上安装的Excel版本,并使用不同的方法生成报告(新版本:通过生成XML文件。旧版本:通过利用Excel自动化)。

如何识别本地计算机上安装的Excel版本?

2个回答

5
你可以打开一个Excel实例并检查版本号:
Dim appExcel As Object
appExcel = CreateObject("Excel.Application")
With appExcel
    Debug.Print(Val(.application.version))
    .quit()
    appExcel = Nothing
End With

这是正确的答案。使用注册表是不可靠的。 - smirkingman

3

您可以查看以下注册表键之一:

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

您应该查找包含“Excel”的键是否存在,因为您可能已安装Office 2003并且在其旁边还安装了Visio 2007,因此两个键都将存在,但只有一个键会有一个Excel子键:
HKEY_CURRENT_USER\Software\Microsoft\Office\11.0
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0

数字/版本对应关系

  • Office 9:Office 2000
  • Office 10:Office XP(第一个支持XML格式工作表的版本)
  • Office 11:Office 2003
  • Office 12:Office 2007
  • Office 14:Office 2010(有趣的是,13被跳过了)

这是个好的开始!在这台机器上我有Visio 2003和Excel 2002。我看到HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel存在,但HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel不存在。 - M.A. Hanin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接