.net - 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。
解决方案
不确定我的问题是否与您的问题相同,但这就是我解决问题的方法:
我认为我所做的关键问题是我正在使用以下方式注册 dll:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe
当我应该注册它时:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe
除此之外,我还关注了这个 StackOverflow Q/A:
推荐阅读
- wordpress - 如何按 ACF 值对 WooCommerce 产品进行排序?
- xpath - XPath 根据字符串中的最后一个单词查找文本
- forms - 如何自动填写 Caldera 表格?
- python - 检测python字符串中的字母数字/数字值
- reactjs - 未处理的拒绝(错误):请求失败,响应中的状态码为 404
- shopify - Shopify Narrative Theme - 如何将产品页面从 1 列布局更改为 2 列布局
- javascript - 选定的选项卡突出显示,直到用户未单击 vuejs 中的另一个选项卡
- json - postgresql:jsonb 实现细节?
- jmeter - JMeter中临界区控制器和简单控制器的区别
- ionic-framework - 为什么我的 Ionic 应用程序中的 SVG 图标的网址在更新后发生了变化?