My Excel addin (XLL AddIn, call it MyAddIn) построен с С#, ExcelDNA, NetOffice, VS2010. У клиента есть еще один addin (пусть назовите его B), я думаю, он написан в VBA.
Клиент говорит, что B отлично работает без MyAddIn. Как только MyAddIn установлен, B выходит из строя с ошибкой:
Код ошибки: 406 Сообщение об ошибке: немодальные формы не могут отображаться в этом хост-приложении из ActiveX DLL, элемента управления ActiveX или страницы свойств.
Я видел этот ресурс Microsoft, но я не хочу просто сообщать клиенту, что B addin необходимо изменить. Я хочу сделать что-то, чтобы избежать этого с моей стороны.
Ниже приведены шаги, описанные для устранения проблемы:
- Когда B addin установлен, он не делает записи реестра для Microsoft
Excel. - Когда
MyAddInустановлен, он записывает запись в MicrosoftExcel. - Записи реестра здесь в основном говорят о том, что addin следует открывать при запуске
Excel, поэтомуBaddin не запускается,Excelотлично работает,MyAddInработает нормально. - Теперь, когда запускается
Baddin, он дает ошибку 406, показанную выше. - Мы можем игнорировать ошибку и продолжать работать с
Baddin; отключениеMyAddInявляется обходным путем. - Когда запускается
Baddin, мы видим, чтоMyAddInзагружается сначала перед добавлениемB, а затем получает ошибку 406. - Когда мы удаляем
MyAddIn, эта ошибка больше не встречается, и все работает нормально. - Чтобы удалить эту ошибку, мы попытались изменить порядок регистрации, чтобы сделать
Baddin всегда открытым доMyAddIn.- Это работает, но тогда это глобальное изменение для Microsoft
Excel, что означает, чтоBaddin всегда открывается, даже когда мы запускаем толькоExcel. Это нежелательно, так какBaddin не может позволить пользователям работать со статическими данными, поскольку добавлениеBпродолжает обновляться в режиме реального времени. По этой причине добавлениеBaddin не делает запись в настройках реестра. Поэтому изменения реестра не являются вариантом. Мы всегда можем открыватьBaddin при открытииExcel.
- Это работает, но тогда это глобальное изменение для Microsoft