UDF надстройки Excel Automation недоступны - PullRequest
0 голосов
/ 04 июня 2010

Я создал следующий модуль автоматизации:

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();
        }  
    }    
}

Я создаю его, и он отлично регистрируется. Я открываю Excel 2003, захожу в tools-> Add-ins, нажимаю на кнопку автоматизации, и надстройка появляется в списке. Я добавляю его, и он появляется в списке дополнений. но сами функции не появляются. Если я ввожу его, он не работает, и если я смотрю в мастере функций, мой надстройка не отображается как категория, а функции отсутствуют в списке.

Я использую Excel 2003 на Windows 7 x86. Я создал проект с Visual Studio 2010. Это дополнение работало на Windows XP, созданной Visual Studio 2008.

1 Ответ

0 голосов
/ 08 июня 2010

оказывается, что CLR не работал правильно, установил патч и теперь он работает.

...