2010-06-03 9 views
0

J'ai créé le Addin d'automatisation suivante:Automation Excel Addin UDFs pas accesible

namespace AutomationAddin 
{ 
    [Guid("6652EC43-B48C-428a-A32A-5F2E89B9F305")] 

    [ClassInterface(ClassInterfaceType.AutoDual)] 
    [ComVisible(true)] 
    public class MyFunctions 
    { 
     public MyFunctions() 
     { 
     } 

     #region UDFs 
     public string ToUpperCase(string input) 
     { 
      return input.ToUpper(); 
     } 
     #endregion 

     [ComRegisterFunctionAttribute] 
     public static void RegisterFunction(Type type) 
     { 
      Registry.ClassesRoot.CreateSubKey(
      GetSubKeyName(type, "Programmable")); 

      RegistryKey key = Registry.ClassesRoot.OpenSubKey(
       GetSubKeyName(type, "InprocServer32"), true); 

      key.SetValue("", 
       System.Environment.SystemDirectory + @"\mscoree.dll", 
       RegistryValueKind.String); 
     } 

     [ComUnregisterFunctionAttribute] 
     public static void UnregisterFunction(Type type) 
     { 
      Registry.ClassesRoot.DeleteSubKey(
       GetSubKeyName(type, "Programmable"), false); 
     } 

     private static string GetSubKeyName(Type type, 
      string subKeyName) 
     { 
      System.Text.StringBuilder s = 
       new System.Text.StringBuilder(); 

      s.Append(@"CLSID\{"); 
      s.Append(type.GUID.ToString().ToUpper()); 
      s.Append(@"}\"); 
      s.Append(subKeyName); 

      return s.ToString(); 
     } 
    }  
} 

Je construis et il enregistre très bien. J'ouvre Excel 2003, allez dans tools-> Add-ins, cliquez sur le bouton automation et l'addin apparaît dans la liste. Je l'ajoute et il apparaît dans la liste des addins. mais, les fonctions elles-mêmes n'apparaissent pas. Si je le tape dedans ne fonctionne pas et si je regarde dans l'assistant de fonction, mon addin n'apparaît pas comme une catégorie et les fonctions ne sont pas dans la liste. J'utilise Excel 2003 sur Windows 7 x86. J'ai construit le projet avec Visual Studio 2010. Cet addin a bien fonctionné sur Windows XP construit avec Visual Studio 2008.

Répondre

0

s'avère CLR ne fonctionnait pas bien, installé un patch et maintenant cela fonctionne.

Questions connexes