Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

in VBA auf .DLL zugreifen

in VBA auf .DLL zugreifen
22.06.2009 16:14:28
Nico
Hallo an alle,
ich bin ein Anfänger was die Problematik "Erstellung und Einbindung von .DLL in VBA" betrifft.
Leider finde ich im Inet keine Sinnvolle Unterstützung für reine Anfänger.
Mein Ausgangspunkt:
Ich habe in Visual Studio 2008 ein neues Projekt -> Klassenbibliotek erstellt und alle Namen und Bezeichnungen so belassen wie sie sind.
In "Class1.vb" habe ich zwei Sub-Routinen erstellt.
Public Class Class1

Public Sub sagHallo()
MsgBox("\ - Huhu")
End Sub



Public Sub sagHallo2(ByVal strX As String)
MsgBox("\ Huhu " & strX)
End Sub


End Class
Nun das ganze als DLL erstellt und schon ist meine ClassLibrary1.dll erstellt.
Mein Problem:
Wie binde ich nun diese DLL in VBA ein, so das ich jeweils auf die in Sub sagHallo und sagHallo("mein Text") zugreifen kann?
Wie kann ich die DLL wärend der Laufzeit registrieren und bei nicht gebrauch (vor Beenden) wieder unregistrieren

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ich vermute : wie bei Windows API
22.06.2009 16:30:21
NoNet
Hallo Nico,
ich habe leider "keinen Plan" von DLL-Programmierung unter VB, aber ich vermute mal, der programmatische Zugriff auf die in der DLL gespeicherten Funktionen erfolgt nach dem gleichen Prinzip wie bei der Verwendung der Windows API-Funktionen, die ebenfalls in DLLs "konsverviert" sind.
Probier mal :
Declare Function sagHallo2 Lib "C:\Ordner\Deine..dll" () As Variant
Gruß, NoNet
AW: Ich vermute : wie bei Windows API
22.06.2009 16:52:48
Nico
Erstmal Danke für Deine Antwort.
Ich habe folgendes nun in VBA stehn:
Private Declare

Function sagHallo2 Lib "J:\Excel\Registrierung\Neuer Ordner\ClassLibrary1\ClassLibrary1\bin\ _
Release\ClassLibrary1.dll" () As Variant
Und versuche es aufzurufen:


Sub tester()
sagHallo2("MeinText")
End Sub


Aber leider bemängelt "Excel" - Eingangspunkt für sagHallo2 wurde nicht gefunden

Anzeige
AW: Ich vermute : wie bei Windows API
22.06.2009 23:14:23
Nepumuk
Hallo Nico,
was du das hast, ist eine ActiveX-DLL. Auf diese musst du erst einen Verweis setzen. Dann kannst du sie wie eine "normale" Klasse behandeln.
Nach dem Muster:
Dim Klassenvariable As Deine_Klasse
Set Klassenvariable = New Deine_Klasse
.
.
.
Set Klassenvariable = Nothing

Damit das funktioniert muss die Instanz der Klasse in der DLL auf MultiUse oder GlobalMultiUse gesetzt sein.
Gruß
Nepumuk
Anzeige
AW: Ich vermute : wie bei Windows API
23.06.2009 08:42:08
Nico
Danke für den Hinweis, bei meinen recherchen habe ich auch festgestellt, dass man unterschiede zu einer com-dll und active dll macht. wobei com-dlls nicht mehr der stand der Dinge sein soll?
Wo in welcher Applikation muss ich den Verweis wie setzten, in VBA? Und wo stelle ich das Multiuse in Visual Studio 2008 ein.
Das Registrieren meiner derzeitigen DLL mit regsrv32 geht ebenso nicht, aber vieleicht eben weil es noch keine gültige dll ist.

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige