2009-02-05 8 views
1

J'ai un complément d'automation écrit en C# qui expose certaines fonctions à utiliser comme formules dans Excel.Comment afficher les fonctions du complément d'automation .net dans la saisie semi-automatique de la formule d'Excel

Les formules peuvent être utilisées avec succès à partir d'une feuille Excel, mais elles n'apparaissent pas dans les listes de saisie semi-automatique de formule d'Excel2007. Par exemple, si je souhaite utiliser la fonction AddNums (x, y) dans une feuille Excel, je dois connaître la fonction appelée ou la fonction dans l'assistant de fonction. Ce serait bien de commencer à taper Add .. et de voir les formules commençant par Add.

Est-ce pris en charge dans Excel pour les compléments d'automatisation? (Je sais que c'est pour xlls).

Répondre

1

Ce Microsoft support de:

Automatisation Add-ins et l'Assistant Fonction Chaque automatisation Add-in a sa propre catégorie dans l'Assistant Fonction Excel. Le nom de catégorie est le ProgID pour le complément; vous ne pouvez pas spécifier un nom de catégorie différent pour les fonctions du module complémentaire Automation. De plus, il n'y a aucun moyen de spécifier des descriptions de fonctions, des descriptions d'arguments ou de l'aide pour les fonctions du Complément Automation dans l'Assistant Fonction.

Cet article mentionne également que d'autres types d'add-ons sont prioritaires dans la liste des formules.

Mon approche préférée est d'écrire un addin VBA qui enveloppe la fonctionnalité que vous exposer dans votre addin actuel. Je le fais en mettant en place mon code dans une DLL COM (qui prend en charge IDTExtensibility2 il charge en tant que complément COM), puis accéder à d'autres méthodes sur cet objet via emballages vba très minces:

Public Function AddinInMethod (param As String) As Variant 
    Dim oAdd As Object 
    On Error GoTo Err 
    Set oAdd = Application.COMAddIns.item("MyProgID").Object 
    AddInMethod = oAdd.AddInMethod(param) 
    Exit Function 
Err: 
    AddinMethod = "#" & Err.Description 
End Function 

Cela fonctionne bien pour moi puisque tout mon code est C++. Comme vous écrivez du code C#, il vaudrait peut-être mieux implémenter votre ajout en tant que complément C# VSTO. Je ne l'ai pas fait personnellement, mais il semble qu'il y ait beaucoup de fonctionnalités de cadre que vous pouvez utiliser comme ce type d'extension (même si vous êtes limité aux versions plus récentes d'Office).

0

Je pense que même dans Excel 2007, les fonctions seront listées. C'est ce que je vois toujours en utilisant mes UDF. Voici un exemple, vous pouvez essayer. Je sais que cela fonctionne sur mon ordinateur.

http://book.greenwich2greenwich.com/Examples/