2016-07-22 2 views
-1

Ich versuche, eine benutzerdefinierte Klasse als TLB in VBA exportiert zu verwenden. Ich habe die regasm Sachen getan, aber ich erhalte diese Störung, wenn ich versuche, ein Unterprogramm innerhalb der Klasse zu nennen:ActiveX-Komponente kann Objekt nicht erstellen, wenn .net-Klasse in VBA

Laufzeitfehler ‚429‘: ActiveX-Komponente kann Objekt nicht erstellen

ich verwiesen habe Die Klasse in VBA, ich habe die Klasse für 32-Bit und 64-Bit-CPUs gebaut und nichts hat funktioniert. Anyways, vba Code:

Sub test() 
     Dim test As New Mail.Class1 
     test.test 
    End Sub 

Und der vb.net Code:

Imports System.Runtime.InteropServices 
    Public Class Class1 
     Public Sub test() 
      MsgBox("hello") 
     End Sub 
    End Class 
+0

Machen Sie Ihre Klassen 'ComVisible' verwenden' CodeBase' in regasm – cyboashu

+0

Lesen: [Exemplarische Vorgehensweise: Erstellen von COM-Objekten mit Visual Basic] (https: // msdn. microsoft.com/en-us/library/x66s8zcd(v=vs.110).aspx) – TnTinMn

Antwort

0

Diese Klasse wird nicht für COM verfügbar gemacht werden. Der einfachste Weg dies zu tun ist, Neues Element hinzuzufügen und COM-Klasse auszuwählen. Dies erzeugt eine Klasse Skelett, das wie folgt aussieht:

<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _ 
Public Class ComClass1 

#Region "COM GUIDs" 
    ' These GUIDs provide the COM identity for this class 
    ' and its COM interfaces. If you change them, existing 
    ' clients will no longer be able to access the class. 
    Public Const ClassId As String = "e19c541f-8eda-4fdd-b030-abed31518344" 
    Public Const InterfaceId As String = "e2122f92-5752-4135-a416-4d499d022295" 
    Public Const EventsId As String = "6b03de7e-90d7-4227-90ec-9121c4ce1288" 
#End Region 

    ' A creatable COM class must have a Public Sub New() 
    ' with no parameters, otherwise, the class will not be 
    ' registered in the COM registry and cannot be created 
    ' via CreateObject. 
    Public Sub New() 
     MyBase.New() 
    End Sub 

End Class 

Denken Sie auch an die „Make Montage COM Visible“ in der Versammlung Informationsdialog (Projekteigenschaften> Registerkarte Anwendung> Montageinformationen)

Nun, wenn Sie überprüfen kompilieren Sie das und rufen Sie RegAsm, sollte es einen Einstiegspunkt für diese Klasse haben

Verwandte Themen