首页 > 解决方案 > VB.NET DLL“ActiveX 组件无法创建对象”

问题描述

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

我在 VBA 中添加了 *.TLB 文件作为参考。我只是想在类库中创建和使用一种方法。我在 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。

标签: .netvbavb.netdllactivex

解决方案


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

我认为我所做的关键问题是我正在使用以下方式注册 dll:

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

当我应该注册它时:

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

除此之外,我还关注了这个 StackOverflow Q/A:

Excel 2010 64 位无法创建 .net 对象


推荐阅读