PowerPoint отображает ошибку «Не могу запустить приложение», когда объект диаграммы Excel встроен в него

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

Вопрос

Это очень распространенная проблема, когда рабочий лист или диаграмма Excel встроен в слово или PowerPoint. Я вижу эту проблему как в Word, так и PowerPoint, так и причина, по которой кажется, это COM Addin прикреплен к Excel. COM Addin написан в C # (.NET). Смотрите прикрепленные изображения для диалогов ошибок.

Я отлажил аддин и нашел очень странное поведение. Подключение (...), ondisconnection (...) методы и т. Д. В COM Addin работает нормально, пока не добавлю обработчик событий в код. Т.е. обрабатывать рабочую таблицу_sheetChange, SelectionChange или любое подобное событие, доступное в Excel. Как только добавим даже один обработчик событий (хотя мой код имеет несколько), Word и PowerPoint начнут жаловаться и не активируйте встроенный объект.

На некоторых постах в Интернете люди попросили удалить антивирусные аддукты для офиса (ни один в моем случае), так что это заставляет меня поверить, что проблема несколько связана с COM ADDINS, которые загружаются при активации приложения хоста объект.

У кого-нибудь есть идеи о том, что здесь происходит?PowerPoint Error

Word Error

Обновлено 21 июня-2010


Выяснил, что оба события, так и изменения в коллекции COMADDINS создают проблемы при активации встроенного объекта. Теперь я использовал приложение Excel :: :: Свойство USERCONTROL, чтобы проверить, находится ли Excel в встроенном состоянии, а затем пропустить любую настройку (...) и код Ondisconnection (...).

Одним из решений к проблеме событий можно для перемещения всех событий уровня приложения в код VBA и вызов .NET. Тем самым удаляя все обработчики событий из .NET CODE.

Может быть еще больше сценариев, когда встроенный объект может не инициализировать, поэтому я выбираю, чтобы отключить COM Addin IE пропустить код в методах onconnection (...) и в OnDisconnection (...).

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

Решение

Вот что я сделал, чтобы избавиться от этой неприятной проблемы:

  1. Удалите все обработчики событий в коде .NET и полагайтесь на события приложения VBA, то есть вместо обработки Excel :: Application :: Worksheet_Activate (...) событие, обрабатывают их в модуле VBA и вызовите в дополнение, когда событие получено Отказ Обработчики событий .NET, похоже, как-то коррумпите государство.

  2. Отключите любой код, который взаимодействует с аддентом в настройке (...), используя флаг в пользовательском параметрах. Смотрите следующую ссылку для деталей на флаге:Com Addins подробно

Я упомянул о приложении Excel :: :: Свойство Usercontrol, но в некоторых случаях он не надежен. Нам нужно рассмотреть следующие случаи, и параметр пользовательского массива - это самостоятельно (...) является наиболее надежным:

  1. Excel начался как независимое приложение
  2. Excel начался как встроенное приложение в каком-то другом приложении
  3. Excel запустился через автоматизацию, например, createObject (...)

Я предпочел отключить дополнительный аддин, когда Excel находится в встроенном режиме. Это зависит от того, какой код вы выполняете в своем onconnection (...) и как другие приложения отвечают на нее при выполнении. Точка № 1 должна быть реализована для решения этой проблемы.

Если у кого-нибудь есть лучшее решение для этого, пожалуйста, дайте мне знать :)

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