我在Visual Studio 2010 Express中编写了VB.NET类库。我确保在Properties - > Application - > Assembly Information选项卡上选择“Make assembly COM-Visible”。我还确保在属性窗口的编译选项卡上选择“Register for COM Interop”。无法在原始编译机器以外的机器上部署.Net DLL
生成的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中的可用引用?
非常感谢您花时间回复。
您可能不应该使用64位版本的Regasm.exe,大多数Office安装都是32位。使用框架,而不是Framework64。 – 2014-12-01 22:00:32
我强烈建议使用installshield limited或其他类似产品来创建安装程序,而不是批处理文件路径。这样的生活很简单。 – RubberDuck 2014-12-01 22:05:01
@HansPassant使用32位版本的Regasm导致DLL出现在VBA引用列表中;然而,现在当我在部署机器上运行VBA代码时,我收到错误“ActiveX组件无法创建对象”。这个宏在开发机器上工作。 – NickVise 2014-12-02 14:21:40