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