Надстройка Excel OLE - .NET COM ведет себя по-разному, когда Excel встроен в приложение

StackOverflow https://stackoverflow.com/questions/1510983

Вопрос

У меня есть надстройка .NET (C #), которая использует COM Shim dll для загрузки в Excel.Надстройка работает нормально, без каких-либо проблем, когда Excel запускается в обычном режиме.Надстройка отображает свою собственную панель инструментов в Excel, которая используется для выполнения различных команд.

Когда я встраиваю Excel в другое приложение (напримерDSOFramer и т.д.), надстройка начинает вести себя странно.Кажется, что если я отключу кнопку на ее панели инструментов, то она больше не будет включена после установки свойства Visible.Кроме того, я получаю кучу ошибок "Ссылка на объект не установлена", потому что объекту Application::Selection присвоено значение NULL, чего никогда не происходит при нормальной работе Excel.Иногда я также получаю ошибки разрешения при вызове метода Application::GetAddIns().

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

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

Решение 2

Я связался с Microsoft Professional по поводу этой проблемы и узнал, что Microsoft теперь не рекомендует встраивать приложения Office.Мне предложили либо прекратить встраивать Excel в приложение, либо использовать только Excel 2007 с ленточным интерфейсом.Согласно MS, пользовательский интерфейс Ribbon не имеет этих проблем.

Проблема с панелями команд заключается в том, что согласование происходит только во время OnConnection, и никакие изменения не могут быть внесены впоследствии.

Другие советы

Я должен признать, что я мало что знаю о DSOFramer, но я натыкался на следующие элементы.Я не знаю, помогает ли это вообще.

текст ссылки

текст ссылки

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