Вопрос

Я программирую надстройку vsto в сочетании с надстройкой автоматизации в VB.NET с использованием MS Visual Studio 2008.Надстройка автоматизации активирована в Excel и зарегистрирована в системе.в основном надстройка автоматизации работает очень хорошо, когда вы вызываете функцию с помощью

"=<function-name>(<argument1>;<argument2>;...;<argument-n>)"

записав его в ячейку Excel или используя мастер функций.

Надстройка vsto используется для запуска через кнопку командной панели формы Windows, где пользователь может ввести необходимые аргументы.Если пользователь закончил, в созданную ячейку будет записана строка, которая будет выглядеть так, как показано в примере выше.

проблема, с которой я борюсь, заключается в том, что когда пользователь запускает Excel, просто используя форму Windows для генерации строки и нажимая «ОК», чтобы заполнить ею ячейку, Excel пытается найти причину функции «=" в ячейку, но не нахожу ее.В камере наконец стоит Name?, потому что после просмотра списка функций моя зарегистрированная функция исчезла. (Кстати, надстройка все еще отображается в разделе «дополнительные-> надстройки» и также загружается снова после следующего запуска Excel)

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

Событие onButtonClick выполняет следующий пример кода:

Me.Application.ActiveCell.Value = "=FUNCTION(""value1"";""value2"")"

Итак, теперь мой вопрос: почему функция автоматизации исчезает, когда пользователь сначала просто использует генератор строк?

Некоторые советы или даже решение моей проблемы были бы очень полезны.

Привет Мартин

Это было полезно?

Решение

хорошо,

после недели безуспешных поисков и тестирования другого кода я нашел причину своей проблемы самостоятельно.Я не знаю, почему Excel удаляет эту функцию из списка, но следующее объяснение решит проблему.

Я сделал 2 ошибки, пытаясь вызвать функцию по коду.во-первых, я выбрал неправильный метод записи в ячейку... просто используйте «me.application.activecell.formula».

вторая и самая важная причина — это настоящая причина: все это не сработало.Пытаясь установить каждый аргумент, точку с запятой, скобки и т. д.более одной строки Excel считывает строку в режиме вычислений и делает что-то не так, когда достигает точки с запятой в формуле.это вызвало ком-исключение (HRESULT:0x800A03EC) говорит, что просто произошел сбой.

Excel неправильно читает точку с запятой в этот момент и выдает исключение.случайно я нашел решение поставить точку с запятой в формулу для разделения параметров.тебе просто нужно написать " "," " в код вместо " ; ".

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

привет Мартин

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top