2013-12-20 4 views
4

Я пытаюсь создать пользовательскую функцию для MS Excel в C#.Создание пользовательских функций MS Excel

Но независимо от того, что я пытаюсь, когда я пытаюсь добавить надстройку в Excel, я всегда получаю печально известный «Выбранный файл не содержит новый сервер автоматизации, или у вас нет достаточных привилегий для зарегистрируйте сервер автоматизации ".

Вот код, который я взял из и онлайн пример просто попробовать его:

// C# 

using System; 
using System.Runtime.InteropServices; 
using Microsoft.Win32; 

namespace AutomationAddin 
{ 
    [ClassInterface(ClassInterfaceType.AutoDual)] 
    public class MyUdf 
    { 
     public MyUdf() 
     { 
     } 

     public double addMeTest(double x, double y) 
     { 
      return x + y; 
     } 

     [ComRegisterFunctionAttribute] 
     public static void RegisterFunction(Type t) 
     { 
      Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(
       "CLSID\\{" + t.GUID.ToString().ToUpper() + 
        "}\\Programmable"); 
     } 

     [ComUnregisterFunctionAttribute] 
     public static void UnregisterFunction(Type t) 
     { 
      Microsoft.Win32.Registry.ClassesRoot.DeleteSubKey(
       "CLSID\\{" + t.GUID.ToString().ToUpper() + 
        "}\\Programmable"); 
     } 
    } 
} 

Я попытался это с MS Visual Studio 2012 на Excel 2013 x64 и Excel 2010 x86

РешенияИзобрались и не добились успеха:

  • [ClassInterface (ClassInterfaceType.AutoDual)], как показано в коде
  • [ComRegisterFunctionAttribute] И [ComUnregisterFunctionAttribute], как показано в коде
  • Regasm/кодовое ничего не делали, а
  • Включение/выключение " Регистрация COM Interop»(VS работает как администратор при строительстве)
  • [сборка: ComVisible (истина)] на истинные
  • Пробовал различные примеры кода из Интернета
  • Прочитайте это на StackOverflow: How to get COM Server for Excel written in VB.NET installed and registered in Automation Servers list?
  • Я также пробовал все вышеперечисленное вместе - не повезло здесь
  • Ран Excel в режиме администратора

Так, пожалуйста, ребята, если вы можете сказать мне, что я здесь отсутствует, и, возможно, даже сказать мне, что я должен сделать, чтобы он работал, я был бы так благодарен! Заранее спасибо!

Я с радостью предоставит вам любую дополнительную информацию.

P.S. Не спали уже две ночи, так что я мог бы что-то испортить глупо. Если кто-то может проверить этот код, если он работает, и скажите мне, что его проект может помочь.

+0

Длинный снимок здесь, вы пробовали работать в режиме администратора? – JuStDaN

+1

Я забыл упомянуть, что сделал. Так что да, но безрезультатно. –

+1

http://www.codeproject.com/Articles/7753/Create-an-Automation-Add-In-for-Excel-using-NET, похоже, решает вашу проблему, надеюсь, что это поможет! – JuStDaN

ответ

2

Вы можете попробовать эту библиотеку https://exceldna.codeplex.com, это упрощает создание UDF.

+0

Большое спасибо за ваше предложение. Я успешно создал XLL UDF раньше с помощью этого инструмента, это здорово.Но проблема в том, что у меня есть университетское задание, и они хотят, чтобы я создал надстройку автоматизации COM, это требование :( –

Смежные вопросы