Поэтому я использую Excel-DNA для упаковки двух COM-библиотек в один 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
Однако, когда я добавляю ссылки в VBA, используя ThisWorkbook.VBProject.References.AddFromFile
, только на одну Dll ссылается галочка. После этого другая dll появляется в Tools -> References, но ее флажок не установлен!
Я видел здесь , что tlb могут быть упакованы в XLL, а взамен на них можно ссылаться в VBA для получения полной поддержки раннего связывания.
Было бы очень здорово упаковать несколько Dll в один XLL, а также зарегистрировать их программно для раннего связывания с intellisense и всем остальным. Что я тут не так делаю?