VB.NET DLL“ ActiveX组件无法创建对象”

时间:2018-12-19 14:07:57

标签: .net vba vb.net dll activex

我正在尝试使用Visual Studio 2017在VB.NET中创建DLL。该DLL将在另一个应用程序的VBA中使用。 VB.NET项目是一个.NET Framework类库项目。

我已将* .TLB文件添加为VBA中的参考。我只是试图在类库中创建和使用一种方法。我在VBA中使用类似于以下内容的名称进行调用:

Sub MySub()
    Dim TestObj As MyProjectName.MyClassName
    Set TestObj = New MyProjectName.MyClassName
    Call TestObj.MyMethodName(Argument)
End Sub

代码总是在以下行上抛出运行时错误429“ ActiveX组件无法创建对象”(来自上面的示例):

Set TestObj = New MyProjectName.MyClassName

这个问题曾经被问过,但是它们大多数都已经很老了(〜10年),而且所提供的解决方案都没有任何不同。我一直在寻找对REGASM.EXE的引用。据我了解,Visual Studio会自动处理此问题,并且在选中“项目>属性>编译>注册COM互操作”复选框后,无需手动调用此方法。

我已按照以下说明操作:https://smallbusiness.chron.com/use-net-class-library-excel-vba-40349.html

此外,我尝试根据以下问题的答案创建一个COM类:ActiveX component can't create object when using .net class in vba

我已经尝试了至少六次不同的迭代,它们都给出了运行时错误429“ ActiveX组件无法创建对象”。我在这里想念什么吗?可能是版本问题吗?我的VS项目的目标是.NET Framework 4.7.2。

1 个答案:

答案 0 :(得分:0)

不确定我的问题是否与您的问题相同,但这是我解决问题的方式:

我认为我正在做的主要问题是我正在向dll注册:

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ RegAsm.exe

我应该在以下位置进行注册:

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ RegAsm.exe

除此之外,我还遵循以下StackOverflow问题:

Excel 2010 64 bit can't create .net object