Ошибка 406 Excel при использовании надстроек VBA и ActiveX.

Моя надстройка Excel (надстройка XLL, назовите ее MyAddIn ) построена на C #, ExcelDNA, NetOffice, VS2010. У клиента есть еще одно дополнение (назовем его B ), я думаю, оно написано на VBA. Клиент сообщает, что B отлично работает без MyAddIn . После установки MyAddIn B выдает ошибку:

Код ошибки: 406 Сообщение об ошибке: немодальные формы не могут отображаться в этом ведущем приложении из ActiveX DLL, элемента управления ActiveX или страницы свойств.

Я видел этот ресурс Microsoft , но я не хочу просто сказать клиенту, что надстройка B нуждается в изменении. Я хочу что-то сделать, чтобы избежать этого со своей стороны.

Вот шаги, описанные для решения проблемы:

  1. Когда надстройка B установлена, она не создает никаких записей в реестре для Microsoft Excel .
  2. Когда MyAddin установлен, он делает запись в реестре для Microsoft Excel .
  3. Записи реестра здесь в основном говорят о том, что надстройка должна открываться при запуске Excel , поэтому надстройка B не запускается, Excel работает нормально, MyAddIn работает нормально.
  4. Теперь при запуске надстройки B выдается ошибка 406, показанная выше.
  5. Мы можем проигнорировать ошибку и продолжить работу с надстройкой B ; отключение MyAddIn - это обходной путь.
  6. Когда запускается надстройка B , мы видим, что MyAddIn загружается сначала перед надстройкой B , а затем возникает ошибка 406.
  7. Когда мы удаляем MyAddIn , эта ошибка больше не возникает, и все работает нормально.
  8. Чтобы удалить эту ошибку, мы попытались изменить порядок реестра, чтобы надстройка B всегда открывалась перед MyAddin .
    • Это работает, но это глобальное изменение для Microsoft Excel , что означает, что надстройка B будет всегда открываться, даже когда мы запускаем только Excel . Это нежелательно, поскольку надстройка B не может позволить пользователям работать со статическими данными, поскольку надстройка B продолжает обновляться в реальном времени. По этой причине надстройка B не делает запись в настройках реестра. Так что изменения в реестре - это не вариант. Мы не всегда можем открыть надстройку B , когда открыт Excel .

12
задан Community 9 July 2018 в 18:41
поделиться