Discussion:
DLL-Einsprungpunkt nicht gefunden
(zu alt für eine Antwort)
Christian Bee
2004-05-05 12:16:30 UTC
Permalink
Hallo allerseits,

folgendes Problem:
Ich möchte mit Excel-VBA eine Prozedur in einer VB6-dll
aufrufen.
Im Excel-VBA-Modul steht:
Declare Sub test Lib "Project1.dll"

Wenn ich die Prozedur "test" jetzt aufrufe, dann kommt die
Meldung:
"dll-Einsprungpunkt test in Project1.dll nicht gefunden"

Instancing im VB6-dll-Klassemodul ist "GlobalMultiUse",
Gross/Kleinschreibung habe ich beachtet.

Wo liegt denn mein Fehler - ist echt zum verzweifeln
Jeder Tip wäre klasse!!
MfG
Christian
Thomas Voigt
2004-05-05 12:28:29 UTC
Permalink
Hallo Christian,
Post by Christian Bee
Hallo allerseits,
Ich möchte mit Excel-VBA eine Prozedur in einer VB6-dll
aufrufen.
Declare Sub test Lib "Project1.dll"
Das geht so nicht.

Unter Extras-> Verweise einen Verweis auf deine Project1.dll
(Vorraussetzung: ActiveX-Dll)
Private oInstanzAusProject1 As new Project1.DeineKlasse
Post by Christian Bee
Wenn ich die Prozedur "test" jetzt aufrufe, dann kommt die
"dll-Einsprungpunkt test in Project1.dll nicht gefunden"
Jepp.
Post by Christian Bee
Instancing im VB6-dll-Klassemodul ist "GlobalMultiUse",
Ok.
Post by Christian Bee
Gross/Kleinschreibung habe ich beachtet.
Wo liegt denn mein Fehler - ist echt zum verzweifeln
Jeder Tip wäre klasse!!
MfG
Christian
MfG
Thomas
Christian Bee
2004-05-05 12:44:54 UTC
Permalink
So klappts, einmal gewusst wie..
Danke Thomas!!
Thorsten Dörfler
2004-05-05 13:17:40 UTC
Permalink
Post by Christian Bee
Ich möchte mit Excel-VBA eine Prozedur in einer VB6-dll
aufrufen.
Declare Sub test Lib "Project1.dll"
Wenn ich die Prozedur "test" jetzt aufrufe, dann kommt die
"dll-Einsprungpunkt test in Project1.dll nicht gefunden"
Das beruht auf der Tatsache, dass Du mit VB6 ActiveX DLLs erstellst.
ActiveX DLLs exportieren ihre Klassen über ein COM-Interface, einer
Typelib und nicht wie Standard-DLLs über eine Export-Table. Um Deine
ActiveX DLL in Excel zu verwenden, musst Du diese über Extras =>
Verweise Referenzieren. Steht Deine DLL nicht in der Liste, musst Du
diese über "Durchsuchen" auswählen.

Standard-DLLs können mit VB nicht erstellt werden. Jedenfalls nicht
ohne Hilfmittel, was auch dann noch allenfalls eine "Krücke" wäre.
Dafür eignen sich andere Programmierumgebungen besser.
Post by Christian Bee
Instancing im VB6-dll-Klassemodul ist "GlobalMultiUse",
Ist der Verweis auf Deine DLL gesetzt, kannst Du einfach die Methode
"Test" aufrufen, da Deine Klasse als "GlobalMultiUse" deklariert ist.
Ansonsten müsstest Du noch eine neue Instanz dieser Klasse erstellen
und könntest dann über diese Instanz Deine Methode "Test" aufrufen.

Alle Klarheiten beseitigt?

Thorsten Dörfler
--
vb-hellfire - einfach anders
http://www.vb-hellfire.de/
Loading...