我在Visual Studio 2010 Express中编写了一个VB.NET类库。我确保在Properties - > Application - > Assembly Information选项卡上选择“Make assembly COM-Visible”。我还确保在属性窗口的编译选项卡上选择“注册COM Interop”。
生成的DLL在编译项目的计算机上正常工作。 DLL旨在对来自Excel的几个输入数组进行一些繁重的处理,并返回一个输出数组。我能够在VBA中添加对DLL的引用,并使用该功能就好了。
我无法弄清楚如何在其他计算机上安装DLL。我确保将.NET更新到部署机器上的当前版本。然后我运行以下批处理文件:
C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ RegAsm.exe“C:\ Users \ Public \ DRAPERLibrary.dll”/ codebase /tlb:DRAPERLibrary.tlb
这次对RegAsm的调用回来时没有错误。
我可以看到Windows注册表对此DLL有一些新的引用,但我无法在Excel中看到DLL。如果我手动浏览到DLL,它会返回错误“无法添加对指定文件的引用”。
我在哪里错了? Visual Studio用于创建Excel引用的内容是什么?我可以添加到批处理文件中以使Excel将此DLL识别为VBA中的可用引用吗?
非常感谢您抽出宝贵时间作出回应。
答案 0 :(得分:0)
我今天能够在其他机器上运行DLL。我最初犯了一些错误导致DLL失败。我的问题的根源是使用64位版本的RegAsm而不是32位版本注册DLL引起的。下面列出的操作顺序是最终解决的问题。
感谢@HansPassant帮助我解决所有问题。