2008-12-05 55 views
0

我正在使用Turbo Delphi 2006.在Delphi中編寫Excel的DLL

該DLL將作爲VBA/DLL組合的一部分從Excel內調用。

問題的第一部分是試圖找出如何傳遞給DLL當前Excel會話的引用。我見過的大多數其他代碼是,它啓動了一個獨立的Excel實例,與您所在的實例不同。

我見過一些C++代碼,它創建一個IDispatch的實例,然後將某些內容傳遞給方法的IDispatch對象,但不知道太多的C++。

任何想法?

回答

7

你描述的是所謂的寫入COM插件。您需要創建一個自動化DLL並實現IDTExtensibility2接口。然後,您將收到Excel Application接口作爲OnConnection方法的參數。

您還需要將您的DLL作爲插件加入到register中,以便Excel自動加載它。

編輯:忘了提及:你可能想看看Add-in Express。他們的框架和組件使得開始創建Office插件變得非常簡單。您絕對不必煩惱IDTExtensibility2的細節。儘管如此,所有這些都有一個(合理的)價格標籤。

3

Delphi附帶一組ActiveX控件,可以完全訪問Excel和其他Office應用程序。它們應該位於工具面板的「服務器」選項卡上。

如果不存在,請選擇Components | Install Packages,然後向下滾動列表直到最後,然後選擇正確的包。

在默認安裝中,他們應該被稱爲:

的Microsoft Office樣品自動化服務器包裝部件

,並應該有一個XP和Win2k的。 XP的將適用於Vista。

現在,如果你想自動化Excel。

如果你只是想通過使用Delphi爲Ex​​cel添加功能,我會建議使用COM對象,因爲我懷疑Excel非常接受COM對象。否則,您可以創建一個直的DLL,並以與Excel使用任何其他DLL相同的方式使用它。