проблема с функцией автоматизации Excel
-
05-07-2019 - |
Вопрос
Я программирую надстройку 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 неправильно читает точку с запятой в этот момент и выдает исключение.случайно я нашел решение поставить точку с запятой в формулу для разделения параметров.тебе просто нужно написать " "," " в код вместо " ; ".
Я рад, если мое решение поможет другому разработчику, столкнувшемуся с той же проблемой.
привет Мартин