проблема с функцией автоматизации Excel - PullRequest
0 голосов
/ 26 ноября 2009

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

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

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

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 01 декабря 2009

хорошо

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...