Excel VSTO 2016 - Показать диалоги аргументов функций для UDF - PullRequest
0 голосов
/ 09 мая 2018

У меня есть библиотека XLL с UDF, используемыми в Excel. Пользователи могут использовать пользовательские функции, введя имя UDF в ячейку напрямую или запустив диалоговое окно Мастер функций и выполнив поиск определенных пользовательских функций, которые, в свою очередь, запустят диалоговое окно Аргумент функции * 1004. * для этого конкретного UDF.

Я сейчас пытаюсь создать Ленту с MSVS2017 / C # / Office-Interop / VSTO , которая показывает Элементы управления галереей с выпадающими меню, содержащими все UDFs как элементы. Когда пользователь нажимает на любой из элементов UDF в раскрывающемся меню, для этого UDF должен отображаться диалог Аргументы функций .

Как отобразить диалоговое окно Аргументы функций для конкретного UDF, использующего Office-Interop / C # / VSTO, или даже для любой встроенной функции?

Я нашел очень мало по теме после того, как занялся поиском. Этот вопрос точен, но код решения не работает.

Я нашел эту документацию в пространствах имен Office Interop , а точнее - в различных встроенных диалогах . Но я не могу найти там ничего о Аргументах функций .

Кажется, довольно просто запустить диалог мастера функций . Это можно сделать с помощью:

Globals.ThisAddIn.Application.Dialogs[Excel.XlBuiltInDialog.xlDialogFunctionWizard].Show();

Я надеюсь, что вы можете открыть диалог Аргументы функций для любого UDF с подобным вызовом. Должен ли я отказаться от попыток Office-Interop и использовать Excel C Api вызов? Или мне стоит попробовать какой-нибудь сторонний инструмент, такой как Excel-DNA или Add-in Express ?

1 Ответ

0 голосов
/ 15 мая 2018

Наконец-то нашли решение! Вам нужно заполнить активную ячейку действительной формулой UDF , прежде чем вызывать Мастер диалоговых окон функций , после чего отобразится диалоговое окно Аргументы функций !

Этот код VBA подсказал мне.

Так работает следующий код C #:

Globals.ThisAddIn.Application.ActiveCell.Formula = "=zAirAtmTPFC()";
Globals.ThisAddIn.Application.Dialogs[Excel.XlBuiltInDialog.xlDialogFunctionWizard].Show();

zAirAtmTPFC () является функцией UDF в XLL.

...