Как отобразить функции надстроек автоматизации .net в формуле автозаполнения Excel - PullRequest
1 голос
/ 05 февраля 2009

У меня есть надстройка автоматизации, написанная на c #, которая предоставляет некоторые функции для использования в качестве формул в Excel.

Формулы можно успешно использовать на листе Excel, но они не отображаются в списках автозаполнения формул Excel2007.

т.е. Если я хочу использовать функцию AddNums (x, y) на листе Excel, я должен знать, как вызывается функция, или я могу найти функцию в мастере функций. Было бы неплохо иметь возможность начать вводить Add .., а затем увидеть формулы, начинающиеся с Add, отображаемого.

Поддерживается ли это в Excel для надстроек автоматизации? (Я знаю это для xlls).

Ответы [ 2 ]

1 голос
/ 05 марта 2009

Это из Поддержка Microsoft :

Автоматизированные надстройки и Мастер функций Каждая надстройка автоматизации имеет свою категорию в мастере функций Excel. Имя категории - это ProgID для надстройки; Вы не можете указать другое имя категории для функций надстроек автоматизации. Кроме того, в мастере функций невозможно указать описания функций, описания аргументов или справку для функций надстроек автоматизации.

В этой статье также упоминается, что другие типы надстроек имеют приоритет в списке формул.

Мой предпочтительный подход заключается в написании надстройки VBA, которая включает в себя функциональность, предоставляемую в вашем текущем надстройке. Я делаю это, реализуя свой код в COM DLL (которая поддерживает IDTExtensibility2, поэтому он загружается как надстройка COM), а затем обращаюсь к другим методам этого объекта через очень тонкие оболочки vba:

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

Это хорошо работает для меня, так как весь мой код - C ++.

Поскольку вы пишете код на C #, вам лучше реализовать свою надстройку как надстройку C # VSTO. Лично я этого не делал, но похоже, что есть много полезных фреймворковых функций, которые вы можете использовать в качестве этого типа надстроек (хотя вы ограничены более новыми версиями Office).

0 голосов
/ 18 июля 2009

Я думаю, что даже в Excel 2007 функции будут перечислены. Это то, что я всегда вижу, используя свои UDF. Вот пример, вы можете попробовать. Я точно знаю, что это работает на моем компьютере.

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

...