2017-02-15 124 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對象的屬性。將其與您的代碼支持的最小值進行比較。