Externe DLL unter VBA(Excel) einbinden

FIAzubi

Mitglied
Moin moin

Wollte unter VBA, in einer Externe DLL-Datei eine Prozedur namens: "abc" od. "asd" der Klasse "Class1" ausführen lassen.

Code:
Declare Function test Lib "C:\Documents and Settings\My Documents\ClassLibrary1.dll" () As Long

Public Sub test()
Call abc
'Call asd

End Sub


Leider kommt bei "Call abc" ein Compiler Error: Sub or Function not defined.
Was habe ich da vergessen

Vielen Dank schonmal
 
Hab das mal wie folgt Probiert.
Geht aber auch nicht.

Was mach ich Falsch?
:(

Code:
Declare Function Class1 Lib "C:\Documents and Settings\My Documents\ClassLibrary1.dll" () As Long



Public Sub test()
Dim abc
Set abc = New Class1


Call abc

'Call asd

End Sub
 
probier's mal wenn du die DLL nach "Windows\System32" kopierst und dann nur:
Code:
Declare Function Class1 Lib "ClassLibrary1.dll" () As Long
 
Geht leider auch nicht.

Das Problem ist, der findet den Einsprungspunkt nicht. Den Pfad zur DLL ist in Ordnung.
 
Hatte angenommen du hast die DLL schon registriert, falls nicht hol das nach. ;)
Das kannst du entweder vorher machen oder während der Laufzeit.

Übrigens: Wenn du Class1 als Function deklarierst, wie willst du davon dann mit new eine neue Instanz erstellen?

Deklaration von Funktionen einer DLL siehe VBA-Hilfe "Declare-Anweisung".
Da steht alles drin was du brauchst damit die Anweisung richtig wird.

Gehts dann immer noch nicht und du hast die DLL selber geschrieben schau nach ob die auch keinen Fehler hat.
 
Fragen über Fragen

moin moin


bin relativ neu in diesem Gebiet. Hab deshalb auch noch nicht so viel Erfahrung.
Wie registriere ich eine DLL während der Laufzeit bzw. wie regestriere ich eine DLL überhaupt?

Aus meiner VBA-Hilfe werd ich nicht so recht schlau....


Die DLL Funktioniert. Hab Sie unter VB.net eingebunden und eine Prozedur aufgerufen.
 
Hier gibts ein gutes Tutorial für PlugIns (erklärt aber gut den Umgang mit DLLs, auch das Registrieren).
Ansonsten ruf mal die Hilfe auf (in einem MS-Office-Produkt deiner Wahl den VBA-Editor aufrufen und dann Hilfe oder F1) und gib "Declare" oder "Declare-Anweisung" ein, da ist die Syntax schön übersichtlich dargestellt mit viel Erklärungen.

PS: Kenne mich mit .NET nicht aus aber kanns sein das diese DLL dann nur mit .NET funktioniert?
 
tach

wenn die dll selbst geschrieben hast, musste sie nicht registrieren, kannst den Pfad hard codieren.

bsp.
Code:
Public Declare Function MessageTest Lib "c:\temp\messageDLL.dll" Alias "Message" (lngHWND As Long) As Integer

Als Alias steht dann der Funktionsname.

Probier mal das
 
Zurück