Laden...

C# .dll Events in Excel-VBA verwenden nicht möglich

Erstellt von Rabi vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.697 Views
R
Rabi Themenstarter:in
3 Beiträge seit 2020
vor 3 Jahren
C# .dll Events in Excel-VBA verwenden nicht möglich

Hallo,

ich versuche mich bereits seit mehreren Tagen daran das unten beschriebene Problem zu lösen.
Leider habe ich trotz sehr vieler Links in diesem Forum als auch bei StackOverflow das Problem nicht beheben können - eventuell könnt ihr mir dabei helfen.

Ich habe in C# eine Bibliothek erstellt - diese habe ich auf meinem Rechner registriert und auch sofort in Excel einbinden können - die Methoden usw. funktionieren einwandfrei - also denke ich habe ich von den Konfigurationen her nichts großartiges falsch gemacht.

Jedoch scheitere ich einfach daran dass ich die Events aus meiner C# Bibliothek in VBA abrufen kann. Im Object-Browser kann ich die Events finden (bereits mit dem "Blitz" Symbol). Jedoch schaffe ich es einfach nicht ein Objekt mit "WithEvents" zu erstellen.

Ich habe mich hauptsächlich an folgenden Topic auf StackOverflow orientiert:
https://stackoverflow.com/questions/39511528/exposing-net-events-to-com

Ich habe folgende Methoden in einer Klasse als auch in einer Form versucht anzuwenden:

Das Problem besteht anscheinend darin dass ich irgendetwas vergessen habe oder einfach falsch verstehe.

Wenn ich mein Objekt in VBA normal initialisiere mit:

Private Testen As New TestKlasse.Connector

Kann ich ohne Probleme auf alle Methoden und Properties zugreifen.

Möchte ich jedoch ohne ein New-Schlüsselwort und dafür mit WithEvents das ganze erstellen (wie im StackOverflow-Post zu sehen).

Private WithEvents Testen As TestKlasse.Connector

Bekomme ich sofort eine Fehlermeldung.

Ebenfalls meine dritte Variante funktioniert nicht:

Private WithEvents Testen As New TestKlasse.Connector

Hier wären noch die Interfaces mit der zugehörigen Klasse (den Inhalt habe ich nur für das Forum entfernt):

    [Guid("5F28EB7F-6DDC-4CB8-B268-0E73F3950C5F")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [ComVisible(true)]
    public interface I_RAB_COM_Interface
    {

    }

    [Guid("2DB1AD6D-7E6B-4411-AC34-BA87EEA1EC34")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [ComVisible(true)]
    public interface I_RAB_COM_Events
    {
        void OnConnectionEstablished(object sender, EventArgs e);
    }

    [Guid("5FC5CFBA-F52C-4F56-A8BC-3669750BF046")]
    [ClassInterface(ClassInterfaceType.None)]
    [ComSourceInterfaces(typeof(I_RAB_COM_Events))]
    [ComVisible(true)]
    public class Connector : I_RAB_COM_Interface, I_RAB_COM_Events
    {

    }

Ich bin für jede Hilfestellung dankbar.

16.807 Beiträge seit 2008
vor 3 Jahren

Sei Dir bewusst, dass VSTO Addins seit vielen Jahren abgekündigt sind und die Zukunft von Erweiterungen für die gesamte Office Suite JavaScript ist.
Siehe auch Text in Word Dokuemnt einfügen - welche Vorgehensweise?

5.657 Beiträge seit 2006
vor 3 Jahren

Das Problem besteht anscheinend darin dass ich irgendetwas vergessen habe oder einfach falsch verstehe.

Weder erstellst du das Objekt so, wie es im verlinkten Artikel erklärt ist, noch definierst du ein Event. Entweder solltest du den Artikel nochmal genauer lesen, oder eine alternative Herangehensweise suchen (siehe Abts Antwort).

Weeks of programming can save you hours of planning