2017-02-15 120 views
0

我目前使用下面的代码来检查,看看是否在用户的计算机上存在的Excel自动化库:检测的Excel版本在Delphi

CoInitialize(nil); 
    ExcelExists := true; 
    try 
    TestExcel := CreateOleObject('Excel.Application'); 
    except 
    ExcelExists := false; 
    end; 
    if ExcelExists then begin 
    TestExcel.Workbooks.Close; 
    TestExcel.Quit; 
    TestExcel := Unassigned; 
    end; 

这一直工作正常,直到一个用户只有Excel 2003中。上面的代码表示他有Excel,但是我的Excel自动化不适用于他,并且我怀疑它不适用于Excel 2003之前的版本。

如何检查安装的Excel版本是否为2007或更高版本?


基于大卫的回答,我最后决定将这个如果ExcelExists语句之后,它似乎做的工作:

S := TestExcel.Application.Version; 
if (copy(S, 3, 1) <> '.') or (S < '12') then 
    ExcelExists := false; 

12版是Office 2007的

+0

使用版本属性是好的,是的,版本12是Excel 2007.与v12中的几个自动化相关的东西发生了变化,主要是国际化,语言等。但我想知道为什么不Excel 2003的工作。自1995年以来,我们使用Excel进行自动化,所有基本的东西(如关闭工作簿和退出,就像您的eexample一样)的工作原理是一样的。 –

回答

4

阅读Version Excel Application对象的属性。将其与您的代码支持的最小值进行比较。