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

Aus VBA auf eigene DLL aus VB.NET zugreifen

Aus VBA auf eigene DLL aus VB.NET zugreifen
17.02.2009 16:00:00
Carsten
Hallo,
solange man innerhalb von VB.NET bleibt ist ja alles ganz einfach und schön, aber wie komme ich aus VBA heraus an die Methoden einer DLL ran die ich in VB.NET 2005 programmiert habe?
Da ich in einer öffentlichen Verwaltung arbeite und wir hier hunderte von Excel- und Word-Vorlagen haben die im Laufe der Jahre/Jahrzehnte unübersichtlich gewachsen sind und wir nun Systempfade ändern müssen etc. stehen wir vor dem Problem viele der Vorlagen mit Makros von Hand anpassen zu müssen. Wir haben uns überlegt in diesem Zuge vieles zu ändern und wollen nun einen Großteil des Programmcodes auslagern um zum einen nicht alles doppelt und dreifach programmieren zu müssen und um den späteren Wartungsaufwand so gering wie möglich zu halten. Leider liefert meines Wissens nach VBA keine gescheite und für uns brauchbare Möglichkeit Klassen o.ä. in separate Dateien auszulagern. Wir haben schon mit der Auslagerung in externe Vorlagen und einem Verweis auf diese experimentiert. Das funktioniert aber leider nur bei einem einzelnen Zugriff auf diese Datei. Öffnen mehrere User Vorlagen die auf diese .dot verweisen gibts Fehlermeldungen.
Nun haben wir zum Test einige Dinge in vb.net programmiert und daraus eine normale Klassenbibliothek und zum Test auch eine COM-Klassenbibliothek gebaut. Leider habe ich bisher zu wenig Erfahrungen im Einbinden von DLLs in meinen VBA-Code und scheitere leider daran.
Ich hoffe das Ihr mir da weiterhelfen könnt.
Grüße,
Carsten

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aus VBA auf eigene DLL aus VB.NET zugreifen
17.02.2009 16:07:00
mumpel
Hallo!
Erstelle eine dll/ocx mit Einsprungspunkt. Anschließend die dll/ocx im System registrieren. Dann kannst Du die Steuerdatei über Extras->Verweise einbinden. Im VBA-Code kannst Du dann die Funktionen der Steuerdatei nutzen.
Gruß, René
AW: Aus VBA auf eigene DLL aus VB.NET zugreifen
17.02.2009 16:22:00
Carsten
Hi!
Danke für Deine Antwort, aber vielleicht habe ich meine DLL ja falsch erstellt. Ich habe in VB.NET 2005 als Projekt eine COM-Klassenbibliothek ausgewählt und diese sieht so aus:

ComClass(testVBA.ClassId, testVBA.InterfaceId, testVBA.EventsId) _
Public Class testVBA
#Region "COM-GUIDs"
' Diese GUIDs stellen die COM-Identität für diese Klasse
' und ihre COM-Schnittstellen bereit. Wenn Sie sie ändern, können vorhandene
' Clients nicht mehr auf die Klasse zugreifen.
Public Const ClassId As String = "4b20da3f-86d5-40ad-8236-39c2697c4daf"
Public Const InterfaceId As String = "937ab9cf-a445-4549-a380-e2e29889676c"
Public Const EventsId As String = "8c7dcd8a-c226-4a36-ae02-1ca25a0368a0"
#End Region
' Eine erstellbare COM-Klasse muss eine Public Sub New()
' ohne Parameter aufweisen. Andernfalls wird die Klasse
' nicht in der COM-Registrierung registriert und kann nicht
' über CreateObject erstellt werden.
Public Sub New()
MyBase.New()
End Sub
Public Sub testMsg()
MsgBox("Ein Hallo aus .NET")
End Sub
End Class


Anm.: Die erste Zeile (ComClass...) steht eigentlich in spitzen Klammern, welche das Forum hier nur leider nicht wollte...
.NET registriert sie ja nach dem kompilieren automatisch im System und ich kann sie danach auch in den Verweisen von Excel/Word auswählen. Nur irgendwie komme ich nicht an die Funktionen ran. Wie sollte denn für mein Beispiel der VBA-Code aussehen? Wie gesagt, DLL-bezogen habe ich mit VBA leider noch keine Erfahrungen.
Grüße,
Carsten

Anzeige

7 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige