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