Ich glaube nicht, dass VSTO Excel UDFs unterstützt, die allgemeine Empfehlung ist die Verwendung von Automation Add-Ins (wie Sids Link suggeriert).
Eine weitere Option besteht darin, eine verwaltete VSTO-Funktion von VBA aus aufzurufen. Auch dies ist nicht empfehlenswert, aber möglich.
(Zusammenfassung des Tutorials von Link) Hier ist eine einfache Möglichkeit, verwaltete Funktionen von VBA aufrufen.
Erstellen Sie eine Klasse mit Ihren Funktionen in VSTO
<System.Runtime.InteropServices.ComVisible(True)> _
Public Class MyManagedFunctions
Public Function GetNumber() As Integer
Return 42
End Function
End Class
verdrahten Ihre Klasse zu VBA in VSTO
Private Sub ThisWorkbook_Open() Handles Me.Open
Me.Application.Run("RegisterCallback", New MyManagedFunctions)
End Sub
erstellen Haken für verwalteten Code und einen Wrapper für die Funktionen in VBA
In einem VBA-Modul in Ihrer Tabelle oder Ihrem Dokument
Dim managedObject As Object
Public Sub RegisterCallback(callback As Object)
Set managedObject = callback
End Sub
Public Function GetNumberFromVSTO() As Integer
GetNumberFromVSTO = managedObject.GetNumber()
End Function
Jetzt können Sie GetNumberFromVSTO() in einer Zelle eingeben =, wenn Excel startet sollte die Zelle Wert 42.
http://blogs.msdn.com/b/pstubbs/archive/2004/12/31/344964.aspx
Vielleicht [this] (http: // blogs.msdn.com/b/eric_carter/archive/2004/12/01/writing-user-defined-functions-for-excel-in-net.aspx) könnte helfen. –
*** Nooooo! *** Denke zweimal darüber nach, bevor du diesen Weg einschlagen musst.Ich fordere Sie dringend auf, den UDF-Ansatz zu verwenden, damit Ihre Code-Logik a) Geschützt vor Excel-Benutzern, die kritische Logik * ändern, die schwer zu erkennen sind * b) in einem Add-In & nicht in mehreren Arbeitsmappen dupliziert c) erfordert nicht Trusted Erlaubnis d) Einheit testbar e) geschrieben in einer aktuellen Sprache & etc –