VSTO 2005 SEを使用してC#Excelアドインを使用してExcel 2003 UDFを作成する方法


1

VSTO管理コードでExcel UDFを作成する方法については、VBA:http://blogs.msdn.com/pstubbs/archive/2004/12/31/344964.aspxを使用しています。

しかし、私はこれをVSTO 2005 SEを使用しているC#Excelアドインで動作させたいと思います。

私はロマンが指摘したがExcelをロードしようとしたとき、私は次の例外を取得する手法を試みた:

カスタマイズアセンブリが が見つかりませんでしたか、ロードできませんでしたが。あなた はまだ

詳細..... 文書を編集して保存することができます:シンプルなオートメーションアドインを使用してUDFを作成する

Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH)) 


************** Exception Text ************** 
System.Runtime.InteropServices.COMException (0x80020005): Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH)) 
at Microsoft.Office.Interop.Excel._Application.Run(Object Macro, Object Arg1, Object Arg2, Object Arg3, Object Arg4, Object Arg5, Object Arg6, Object Arg7, Object Arg8, Object Arg9, Object Arg10, Object Arg11, Object Arg12, Object Arg13, Object Arg14, Object Arg15, Object Arg16, Object Arg17, Object Arg18, Object Arg19, Object Arg20, Object Arg21, Object Arg22, Object Arg23, Object Arg24, Object Arg25, Object Arg26, Object Arg27, Object Arg28, Object Arg29, Object Arg30) 
at ExcelWorkbook4.ThisWorkbook.ThisWorkbook_Startup(Object sender, EventArgs e) in C:\projects\ExcelWorkbook4\ExcelWorkbook4\ThisWorkbook.cs:line 42 
at Microsoft.Office.Tools.Excel.Workbook.OnStartup() 
at ExcelWorkbook4.ThisWorkbook.FinishInitialization() in C:\projects\ExcelWorkbook4\ExcelWorkbook4\ThisWorkbook.Designer.cs:line 66 
at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.ExecutePhase(String methodName) 
at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.ExecuteCustomizationStartupCode() 
at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.ExecuteCustomization(IHostServiceProvider serviceProvider) 


************** Loaded Assemblies ************** 
1

は非常に簡単です。専用のアセンブリを作成し、COMから表示できるようにする必要があります。残念ながら、管理対象のVSTO Excel AddinではUDFを定義することはできません。

とにかく、非常に制限されていることがわかりました。それはin this discussionと記載されています。基本的に、あなたのアドインは、含まれているUDFを登録するために、各ブックにいくつかのVBコードを注入する必要があります。


5

また、ExcelDna-http://www.codeplex.com/exceldnaもご覧ください。 ExcelDnaを使用すると、管理対象アセンブリは、ユーザー定義関数(UDF)とマクロをネイティブの.xllインターフェイスを通じてExcelに公開できます。このプロジェクトはオープンソースであり、自由に商業利用が可能です。

ユーザー定義関数は、C#、Visual Basic、F#、Java(IKVM.NETを使用)で作成でき、.dllにコンパイルするか、テキストベースのスクリプトファイルで公開することができます。 Excel 97からExcel 2007までのExcelバージョンがサポートされています。

.xllインタフェースを使用してではなく、オートメーションアドインを作るのいくつかの利点が含まれます:COM登録がに必要と言及されていないので、

  • Excelのバージョンがサポートされている古い、
  • 展開がはるかに簡単ですワークシート式のユーザー定義関数はアドインの場所にバインドされず、
  • ExcelDnaで公開されるUDF関数のパフォーマンスは優れています。