2014-09-24 104 views
-4

對於一個項目,我需要導入一個在Delphi中生成的DLL並調用一些函數。 但是,projectteam中沒有人知道如何完成此操作。我們公司的主管用C++編寫了一個程序來打開DLL並調用函數,但他沒有VBA的經驗。在vba中導入Delphi dll

我們的項目是調用函數並將一些參數從excel工作表傳遞給程序(燃氣輪機模擬項目)。我們的第一個問題是:我們如何在VBA中加載Delphi DLL?我讀了關於函數dllimport,但我仍然不知道如何使用這個函數。

例如,在DLL中有一個函數:d4868activateLog 在Delphi的代碼如下:

function activateLog (const filename: PAnsiChar):Integer; 

我們怎樣調用這個函數?

+0

我認爲你的問題將很快被用於沒有表現出[功夫](HTTP關閉://bit.ly/ZcYEWW)來解決你的問題。 – mg30rg 2014-09-24 11:37:38

+0

我在google上搜索了很多,但沒有任何結果。正如我所說,有一些網站使用dllimport,但這個功能沒有解釋。我知道VBA的基礎知識,我知道如何使用Google,但是如何在vba中導入dll文件在任何地方都沒有解釋清楚。 – Volksdansmatt 2014-09-24 11:43:41

+0

谷歌「在VBA中訪問DLL」,點擊「我感覺幸運」的最終結果是[如何:在Excel中訪問DLL](http://msdn.microsoft.com/zh-cn/library/office/bb687915% 28v = office.15%29.aspx) – 2014-09-24 11:43:51

回答

4

您不能從VBA調用該函數,因爲它使用register調用約定。 VBA只能導入stdcall函數。

你可以改變Delphi代碼:

function d4868activateLog(const filename: PAnsiChar): Integer; stdcall; 

然後在VBA你可以這樣寫:

Private Declare Function d4868activateLog Lib "mydll.dll" (ByVal filename As String) As Long