因此,我使用Excel将两个COM XLL打包到一个XLL中。
<ExternalLibrary Path="FancyDna.DllOne.dll" ExplicitExports="false" LoadFromBytes="true" ComServer="true" Pack="true" />
<ExternalLibrary Path="FancyDna.DllTwo.dll" ExplicitExports="false" LoadFromBytes="true" ComServer="true" Pack="true" />在VBA:
Sub TestEarlyBound()
Application.RegisterXLL Application.ActiveWorkbook.Path & "\build\FancyDna.Pack-AddIn64-packed.xll"
ThisWorkbook.VBProject.References.AddFromFile Application.ActiveWorkbook.Path & "\build\FancyDna.Pack-AddIn64-packed.xll"
Call CallDllOne
Call CallDllTwo
End Sub但是,当我使用ThisWorkbook.VBProject.References.AddFromFile在VBA中添加引用时,只引用一个带有复选框的Dll。另一个dll出现在工具中
我看到这里可以在XLL中打包tlb,作为回报,它可以在VBA中引用以获得完整的早期绑定支持。
在一个XLL中打包几个Dlls,并以编程方式注册它们,以便早期绑定到intellisense和所有内容,这将是非常酷的。我在这里做错什么了?
发布于 2019-06-13 18:13:17
只有一个.tlb文件可以嵌入到.xll中。
因此,您需要做的是从多个.tlb程序集生成一个.NET文件。这将需要一些努力-我不知道有一个工具会很容易做到这一点。参见这个StackOverflow问题:将两个.IDL文件或两个.tlb文件合并为一个文件
如果你试过这些,请告诉我们!
发布于 2019-06-24 14:43:27
因此,根据“戈弗特”的回答,我尝试了以下几种方法,并能让它发挥作用.
midl {Master IDL}.idl /tlb {Master IDL}.tlbhttps://stackoverflow.com/questions/56581867
复制相似问题