.NET DLL in VBA nutzen

little_skunk

Semiprofi
Thread Starter
Mitglied seit
17.08.2006
Beiträge
3.773
Hallo

Folgendes Problem. Wir nutzen hier auf Arbeit eine Software für automatisierte Tests. Die Testfälle liegen in Form von Excel Tabellen vor. Eine ganze Ansammlung von VBA Funktionen dient als Schnittstelle.
Jetzt soll eine neue Software die Testausführung übernehmen. Die Excel Tabellen sollen beibehalten werden. So der Plan. Die neue Software bietet eine wunderschöne und einfache API in Form einer .NET DLL. Natürlich nicht com visible.

Was kann ich jetzt machen um die .NET DLL in VBA nutzen zu können. Meine bisherigen Versuche sehen nicht so gut aus.
1.) DLL com visible machen. Mangels Quellcode zum kompilieren der DLL nicht möglich oder gibt es da irgend einen Trick?
2.) Vererbung geht nicht weil praktisch überall NotInheritable steht.

Was habe ich sonst noch für Möglichkeiten?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Hersteller fragen ist nicht ganz so einfach. Es gibt bei uns selber ernannte Spezialisten oder sagen wir besser Verantwortliche für diese Software an denen ich erst vorbei müsste. Da will ich einfach vorbereitet sein und alle Möglichkeiten kennen.
 
Kurze Frage: Damit eine DLL überhaupt Com Kompatibel ist, muss sie unter anderem öffentliche Konstruktoren für alle Klassen haben richtig?
 
sorry, kA, bin kein Programmierer. Ich kann dir nur den allgemeinen Tip geben dich an den Hersteller zu wenden um zu erfragen welche Schnittstellen sie anbieten und wie man sie benutzt.
Kurzes googlen brachte jedenfalls das hervor: Call VB.Net DLL from Excel VBA - Xtreme Visual Basic Talk
Die Links darin sind denk ich ganz hilfreich.
 
Ich hab einfach mal eine leere Com Klasse erstellt und den Konstruktor private gemacht. Siehe da es kommt sofort ne Meldung, dass diese Klasse nicht Com Kompatibel ist. Damit kann sich selbst der Hersteller die Karten legen.

Die komplette DLL hat den Zusatz .NET nicht verdient. Vom Quellcode ist die einfach nur unter alles Sau. So als würde ein Programmierer, der bisher immer nur prozeduale Programme geschrieben hat, das erste mal an eine objektorientiere Programmiersprache gesetzt. Danach sieht es leider aus. Keine Konstruktoren. Wenn dann sind sie Private. Dafür dann aber eine CreateInstanz Funktion, die genau das macht was der Konstruktor hätte machen sollen. Einfach nur grausam.

Lösung: Wird wohl auf einen Wrapper hinauslaufen. Dabei können wir dann auch gleich ordentliche Konstruktoren einbauen. Wer weiß vieleicht ist das dann auch ganz gut für meine berufliche Zukunft.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh