Надстройка Excel OLE - .NET COM ведет себя по-разному, когда Excel встроен в приложение
Вопрос
У меня есть надстройка .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, но я натыкался на следующие элементы.Я не знаю, помогает ли это вообще.