PowerPoint affiche une erreur «Impossible de démarrer l'application» lorsqu'un objet de graphique Excel y est intégré

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

Question

Il s'agit d'un problème très courant lorsque Excel Worksheet ou Chart est intégré à Word ou PowerPoint. Je vois ce problème à la fois dans Word et PowerPoint et la raison pour laquelle il semble est le com Addin attaché à Excel. L'addition com est écrite en C # (.NET). Voir les images ci-jointes pour les boîtes de dialogue d'erreur.

J'ai débogagé l'addine et j'ai trouvé un comportement très étrange. Les méthodes OnConnection (...), OnDisconnection (...) etc. dans le com Addin fonctionnent bien jusqu'à ce que j'ajoute un gestionnaire d'événements au code. c'est-à-dire gérer la feuille de calcul_sheetchange, la sélection de sélection ou tout événement similaire disponible dans Excel. Dès que j'ajoute même un seul gestionnaire d'événements (bien que mon code en ait plusieurs), Word et PowerPoint commencent à se plaindre et n'activent pas l'objet intégré.

Sur certains des publications sur Internet, les gens ont été invités à supprimer les ajouts anti-virus pour l'office (aucun dans mon cas), donc cela me fait croire que le problème est quelque peu lié aux addines com qui sont chargées lorsque l'application hôte s'active L'object.

Quelqu'un a-t-il une idée de ce qui se passe ici?PowerPoint Error

Word Error

Mise à jour du 21 juin-2010


J'ai découvert que les événements et les modifications de la collection Comaddins crée des problèmes lorsque l'objet intégré est activé. J'ai maintenant utilisé la propriété Excel :: Application :: userControl pour vérifier si Excel est à l'état intégré, puis sauter un code OnConnection (...) et OnDisconnection (...).

Un problème de solution aux événements peut être de déplacer tous les événements de niveau d'application vers le code VBA et d'appeler .NET. Supprimant ainsi tous les gestionnaires d'événements de .NET Code.

Il peut y avoir encore plus de scénarios où un objet embarqué pourrait ne pas initialiser, donc je choisis de désactiver le com Addin, c'est-à-dire sauter le code dans les méthodes OnConnection (...) et OnDisconnection (...).

Était-ce utile?

La solution

Voici ce que j'ai fait pour me débarrasser de ce problème ennuyeux:

  1. Supprimez tous les gestionnaires d'événements dans le code .NET et comptez sur les événements d'application VBA, c'est-à-dire au lieu de gérer Excel :: Application :: Worksheet_activate (...), gérez-les dans un module VBA et appelez l'addition lorsqu'un événement est reçu . Les gestionnaires d'événements .NET semblent corrompre l'État d'une manière ou d'une autre.

  2. Désactivez tout code qui interagit avec l'addition dans OnConnection (...) à l'aide de l'indicateur dans Param personnalisé. Voir le lien suivant pour plus de détails sur le drapeau:Com Addines en détail

J'ai mentionné la propriété Excel :: Application :: userControl mais elle n'est pas fiable dans certains cas. Nous devons considérer les cas suivants et le paramètre du tableau personnalisé est OnConnection (...) est le plus fiable:

  1. Excel a commencé comme une application indépendante
  2. Excel a commencé comme application intégrée dans une autre application
  3. Excel a commencé par l'automatisation, par exemple CreateObject (...)

J'ai préféré désactiver totalement l'addine lorsque Excel est en mode intégré. Cela dépend du code que vous exécutez dans votre onconnection (...) et de la façon dont les autres applications y répondent lors de l'exécution. Le point n ° 1 doit être mis en œuvre pour résoudre ce problème.

Si quelqu'un a une meilleure solution à cela, faites-le moi savoir :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top