проблема с функцией автоматизации Excel

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

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

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

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

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

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

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

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

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

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

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


person Martin R.    schedule 26.11.2009    source источник


Ответы (1)


хорошо,

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

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

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

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

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

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

person Martin R.    schedule 01.12.2009