Einzelnen Beitrag anzeigen

Sly1

Registriert seit: 31. Okt 2010
4 Beiträge
 
#1

Delphi DLL in Excel VBA einbinden

  Alt 31. Okt 2010, 00:28
Hallo zusammen,

Ich habe versucht eine Funktion für Excel (2003) aus Geschwindigkeitsgründen als DLL, (erstellt mit Delphi 7) auszulagern.
Die Funktion soll die Edit Distanz (Levensthein) zwischen zwei Strings (Pchars) berechnen.
Mit einem kleinen Testprogramm in Delphi funktioniert auch alles wunderbar.

Aber wenn ich diese dann mittels VBA in Excel einbinden, erscheint nur die Excelfehlermeldung (in der Zelle): #Wert!
Ich habe die DLL sowohl im Windowsverzeichnis system32 gehabt als auch im gleichen Verzeichnis wie das Excel Arbeitsblatt.

Registrieren lässt sich die DLL nicht da erscheint nur die Fehlermeldung "DLLRegister Server Eingangspunkt wurde nicht gefunden"

Um das Zusammenspiel mit Excel (2003) und der Funktion in der DLL zu vereinfachen,
habe ich (zwecks Test) erst mal mit einer einfacheren Funktion probiert, nämlich zwei Longint Zahlen addieren. Das Ergebnis ist aber dasselbe. (Funktioniert im Delphi Testprogram, aber nicht in Excel). Habe es auch schon mit Double probiert.

Hier der Delphi DLL Code mit der (vereinfachten) Funktion Addiere:

Delphi-Quellcode:
    library LevenDLL;

    uses
    ShareMem,
    SysUtils,
    Classes;

    {$R *.res}


    function Addiere( z1, z2: longint): longint; stdcall;
    begin
    Addiere := z1 + z2;
    end;

    exports Addiere;

    begin
    end.

Was mich weiter verwundert ist dass in Excel exakt die gleiche Fehlermeldung kommt, wenn ich die DLL(s) umbenenne also von Excel gar nicht gefunden werden kann.

In VBA unter Excel sieht der Code wie folgt aus:

Option Explicit
Declare Function Addiere Lib "D:\Markt\LevenDLL.dll" (ByVal z1 As Long, ByVal z2 As Long) As Long

und in der Excel zelle steht dann die Funktion =Addiere(I5;J5) eben mit dem Ergebnis: #Wert!

Nun habe ich fast einen Tag in Foren und in Google gesucht und sehr häufig das gleich Problem gefunden nur leider nicht die Lösung dazu.

Ich habe etwas von COM Dateien gelesen, (kann das das Problem sein)? muß ich hier anders compilieren in Delphi? fehlen mir Bibliotheken? oder was mach ich hier falsch?
Wer hat Erfahrung mit Delphi-DLLs für Excel und kann mir hier auf die Sprünge helfen?
Muß ich in Excel einen Verweis anmelden (geht nicht kommt Fehlermeldung).
So ein hartnäckiges Problem hatte ich schon lange nicht mehr, ist zum verzweifeln.


Vielen Dank im Voraus

Geändert von mkinzler (31. Okt 2010 um 18:57 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat