2016-07-22 4 views
-1

vba에서 .tlb로 내 보낸 사용자 지정 클래스를 사용하려고합니다. 나는 RegAsm을 물건을했을하지만 클래스 내에서 서브 루틴을 호출 할 때이 오류가 계속 :vba에서 .net 클래스를 사용할 때 ActiveX 구성 요소가 개체를 만들 수 없습니다.

런타임 오류 '429': ActiveX 구성 요소는 개체에게 내가 언급 한

를 만들 수 없습니다 vba의 클래스, 32 비트 및 64 비트 CPU 용 클래스를 작성했지만 아무 것도 작동하지 않았습니다. 어쨌든, VBA 코드 :

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

그리고 vb.net 코드 :

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

레거시에서 'ComVisible'클래스를 사용하십시오. – cyboashu

+0

읽기 : [연습 : Visual Basic으로 COM 객체 만들기] (https : // msdn. microsoft.com/en-us/library/x66s8zcd(v=vs.110).aspx) – TnTinMn

답변

0

그 클래스는 COM에 노출되지 않습니다. 가장 간단한 방법은 새 항목을 추가하고 COM 클래스를 선택하는 것입니다. 이것은 다음과 같습니다 클래스 골격을 생성

또한
<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 

때를 이제 어셈블리 정보 대화 상자에서 "볼 수있게 조립 COM"(프로젝트 속성> 응용 프로그램 탭> 어셈블리 정보)

을 확인하는 기억 이 클래스를 컴파일하고 RegAsm을 호출하면이 클래스에 대한 진입 점이 있어야합니다.

관련 문제