Erstellen von Excel 2003 UDF mit einem C# Excel-Add-In mit VSTO 2005 SE


1

Ich habe einen Artikel zum Erstellen von Excel-UDFs in VSTO verwalteten Code mit VBA: http://blogs.msdn.com/pstubbs/archive/2004/12/31/344964.aspx.

Allerdings möchte ich dies in einem C# Excel-Add-in mit VSTO 2005 SE arbeiten, kann jemand helfen?

habe ich versucht, die Technik Romain wies darauf hin, aber wenn sie versuchen, Excel ich die folgende Ausnahme erhalten zu laden:

Die Anpassung Montage nicht gefunden werden konnte oder nicht geladen werden konnte. Sie können immer noch bearbeiten und speichern Sie das Dokument .....

Details:

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

Erstellen UDF eine einfache Automatisierung Addin ist sehr einfach. Sie müssen eine dedizierte Assembly erstellen und sie von COM aus sichtbar machen. Leider können Sie in einem verwalteten VSTO-Excel-Add-In keine benutzerdefinierte Funktion definieren.

Wie auch immer, es gibt eine Arbeit, die ich sehr einschränkend fand. Es wird in this discussion beschrieben. Grundsätzlich muss Ihr Add-In in jede Arbeitsmappe VB-Code einfügen, um die darin enthaltene UDF zu registrieren.


5

Sie sollten sich auch ExcelDna - http://www.codeplex.com/exceldna ansehen. ExcelDna ermöglicht verwalteten Assemblys, benutzerdefinierte Funktionen (UDFs) und Makros über die native .xll-Schnittstelle für Excel verfügbar zu machen. Das Projekt ist Open-Source und erlaubt frei kommerzielle Nutzung.

Ihre benutzerdefinierten Funktionen können in C#, Visual Basic, F #, Java (mithilfe von IKVM.NET) geschrieben und in eine DLL kompiliert oder über eine textbasierte Skriptdatei verfügbar gemacht werden. Excel-Versionen von Excel 97 bis Excel 2007 werden unterstützt.

Einige Vorteile der XLL-Schnittstelle statt Automatisierung Add-In zu machen sind:

  • ältere Versionen von Excel unterstützt werden,
  • Bereitstellung viel einfacher ist, COM-Registrierung da nicht und Referenzen erforderlich ist, um Benutzerdefinierte Funktionen in Arbeitsblattformeln sind nicht an den Speicherort des Add-Ins gebunden, und die Leistung von UDF-Funktionen, die über ExcelDna verfügbar gemacht werden, ist ausgezeichnet.