我正在尝试使用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。
答案 0 :(得分:0)
不确定我的问题是否与您的问题相同,但这是我解决问题的方式:
我认为我正在做的主要问题是我正在向dll注册:
C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ RegAsm.exe
我应该在以下位置进行注册:
C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ RegAsm.exe
除此之外,我还遵循以下StackOverflow问题: