2009-03-04 6 views
1

J'ai créé un addin d'automation en C# .NET et ai un shim dll pour cela. La DLL shim contient toutes les méthodes définies par l'utilisateur qui appellent les méthodes appropriées dans l'assembly .NET.Les fonctions définies par l'utilisateur dans l'Automation se comportent différemment Excel 2007

Le problème que je suis confronté est lié à Excel 2007.

Dans Excel 2003, 1. Ajouter une nouvelle forme à une feuille de calcul 2. Insérer >> Fonction >> SUM. Les arguments de fonction dialogue revient 3. Cliquez sur la forme nouvellement inséré à la place d'une cellule Note: Rien ne se passe et aucune valeur de la cellule est saisie automatiquement dans la zone argument

Maintenant dans Excel 2007, 1. Insérez un nouvelle forme 2. Onglet Formules du ruban >> Insérer fonction >> SUM. Arguments de la fonction dialogue arrive 3. Cliquez sur la forme nouvellement inséré Notez que maintenant un message d'erreur apparaît indiquant « La formule que vous avez saisi contient une erreur »

Cette boîte de dialogue vient pour une fonction prédéfinie (SOMME). Si je sélectionne ma fonction dans la liste de SUM, la boîte de dialogue d'erreur ne s'affiche pas et la boîte de dialogue Argument de fonction disparaît. La cellule affiche ensuite une erreur smarttag.

Y at-il quelque chose qui doit être mis dans la DLL SHIM pour chaque fonction? Comme un attribut ou quelque chose qui affichera cette boîte de dialogue d'erreur. OU peut-être une valeur spéciale renvoyée par la méthode pour indiquer que l'argument a généré une erreur.

La fonction définie dans la cale COM sont comme:

STDMETHOD(GetArea)(MyExcelAddIn::Range *r, double *pRetVal) 
{ 
    return m_pMyUDF->GetArea(r, pRetVal); 
} 
+0

Je suppose que votre fonction prend l'objet comme argument par rapport à un type spécifique tel que Range. Est-ce le cas? – shahkalpesh

+0

Voici comment les méthodes sont déclarées. Cette méthode renvoie une valeur "TRUE" ou "FALSE" selon que la cellule sélectionnée est valide ou non. STDMETHOD (IsValid) (MyAddIn :: Range * r, BSTR * pRetVal) { return m_pMyExcelUDF-> IsValid (r, pRetVal); } Existe-t-il des attributs pour les méthodes UDF? – A9S6

Répondre

0

Je contacté Microsoft et ils ont confirmé que ce bogue dans le produit Excel. Je posterai le lien du bug quand je le recevrai d'eux.

Questions connexes