Excel-DNAには、.NET クラスを COM に直接公開するオプションがあるため、通常の COM クラスとして VBA から直接使用できます。
これを行うには、クラスが ComVisible である (またはアセンブリ全体が ComVisible である) 必要があり、次のように、.dna ファイルで ExternalLibrary を ComServer='true' としてマークする必要があります。
<DnaLibrary RuntimeVersion='v4.0' />
<ExternalLibrary Path='MyAddIn.dll' ComServer='true' />
</DnaLibrary>
次に、登録のオプションがいくつかあります。「Regsvr32.exe MyAddInDna.xll」を呼び出すか、アドインの AutoOpen で ExcelDna.Integration.ComServer.RegisterServer() を呼び出します。
これらは両方とも、.xll ファイルがクラスの COM サーバーになるようにレジストリ エントリを設定します。その後、CreateObject("MyNameSpace.MyClass") を使用して、VBA からレイト バインドされたオブジェクトにアクセスできます。
タイプ ライブラリをセットアップするには、別の手順が必要です (VBA でインテリセンスを提供するため)。このために、tlbexp.exe を使用してタイプ ライブラリを生成します。regsvr32 / ComServer.RegisterServer 呼び出しは、タイプ ライブラリを見つけて登録します。
.dll を .xll ファイルにパックすることもできます (pack='true' 属性を ExternalLibrary タグに追加します)。タイプ ライブラリも存在する場合はパックされ、呼び出し時に .xll ファイルのリソースから登録されます。 Regsvr32.exe
したがって、最終結果は、UDF、リボン、RTD サーバーを備えた Excel アドインであり、VBA からアクセスできる COM サーバーでもある単一ファイルの .xll アドインになる可能性があります。
ここでのディスカッションの詳細情報: http://exceldna.codeplex.com/discussions/252721およびここ: http://groups.google.com/group/exceldna/browse_frm/thread/4c5a71efbe96d885。