1

VBA を使用して VSTO マネージ コードで Excel UDF を作成する方法に関する記事を見ました: http://blogs.msdn.com/pstubbs/archive/2004/12/31/344964.aspx

ただし、VSTO 2005 SE を使用して C# Excel アドインでこれを機能させたいのですが、誰か助けてもらえますか?

Romain が指摘した手法を試しましたが、Excel を読み込もうとすると、次の例外が発生します。

カスタマイズ アセンブリが見つからなかったか、読み込めませんでした。ドキュメントを編集して保存することはできます.....

詳細:

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 **************
4

2 に答える 2

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 インターフェイスを使用する利点には、次のようなものがあります。

  • 古いバージョンの Excel がサポートされています。
  • COM 登録が不要であり、ワークシートの数式内のユーザー定義関数への参照がアドインの場所にバインドされないため、展開がはるかに簡単になります。
  • ExcelDna を通じて公開された UDF 関数のパフォーマンスは優れています。
于 2008-12-08T11:20:18.787 に答える
1

シンプルな自動化アドインを使用して UDF を作成するのは非常に簡単です。専用のアセンブリを作成し、COM から見えるようにする必要があります。残念ながら、マネージド VSTO Excel アドインで UDF を定義することはできません。

とにかく、回避策がありますが、これは非常に制限的であることがわかりました。これについては、このディスカッションで説明します。基本的に、アドインはワークブックに含まれる UDF を登録するために、いくつかの VB コードを各ワークブックに挿入する必要があります。

于 2008-09-24T08:14:41.550 に答える