Partager via


Dépannage d'erreurs d'exécution dans les solutions Office

Vous pouvez rencontrer des problèmes au moment de l'exécution lorsque vous effectuez les tâches suivantes dans les solutions Office créées dans Visual Studio :

  • Installation des solutions

  • Chargement ou exécution des solutions

  • Utilisation de propriétés, méthodes et événements spécifiques dans les solutions

  • Personnalisation de l'interface utilisateur

  • Liaison de données à des contrôles et données de mise en mémoire cache

  • Utilisation de la classe ServerDocument

Installation de solutions

Visual Studio Tools pour Office Runtime écrit des messages dans l'observateur d'événements de Windows, pour toutes les exceptions levées lors de l'installation ou de la désinstallation des solutions Office. Vous pouvez utiliser ces messages pour résoudre les éventuels problèmes d'installation et de déploiement. Pour plus d'informations, consultez Journalisation des événements pour les solutions Office.

Vous pouvez rencontrer les erreurs suivantes lors de l'installation des solutions Office.

Impossible d'installer le complément à l'aide de la boîte de dialogue Compléments COM

Si vous tentez d'utiliser la boîte de dialogue Compléments COM dans une application Office en vue d'installer un complément que vous avez créé à l'aide des outils de développement Office de Visual Studio, l'erreur suivante apparaît.

« nom de votre complément.dll n'est pas un complément Office valide. »

Vous ne pouvez pas utiliser la boîte de dialogue Compléments COM pour installer un complément d'application créé à l'aide des outils de développement Office dans Visual Studio. Effectuez plutôt l'une des actions suivantes :

  • Si vous souhaitez exécuter le complément sur votre ordinateur de développement, générez le projet, puis démarrez l'application Office. Votre complément doit être chargé automatiquement. Sinon, cliquez sur Exécuter sans débogage dans le menu Déboguer de Visual Studio. Pour plus d'informations, consultez Vue d'ensemble du processus de génération de solutions Office.

  • Si vous tentez de déboguer le complément sur votre ordinateur de développement, appuyez sur F5 ou bien cliquez sur Démarrer le débogage dans le menu Déboguer de Visual Studio. Pour plus d'informations, consultez Débogage dans les projets au niveau de l'application.

  • Si vous souhaitez installer le complément sur l'ordinateur d'un utilisateur final, utilisez ClickOnce ou Windows Installer pour le déployer. Pour plus d'informations, consultez Déploiement de solutions Office.

La solution est correctement installée mais une exception FrameworkVersionMismatchException est levée dans l'observateur d'événements

Lorsque vous installez une solution Office créée à l'aide de Visual Studio, une erreur peut s'afficher dans l'observateur d'événements, relative à l'exception Microsoft.VisualStudio.Tools.Applications.Deloyment.FrameworkVersionMismatchException. Cette exception n'indique pas une erreur liée à la solution, vous pouvez donc l'ignorer.

Cette exception est levée et interceptée en interne par Visual Studio Tools pour Office Runtime lorsque vous installez une solution Office qui cible .NET Framework 4 sur un ordinateur sur lequel sont installés .NET Framework 3.5 et .NET Framework 4. Visual Studio Tools pour Office Runtime utilise cette exception pour déterminer quelle version du CLR doit être chargée pour la solution.

Chargement ou exécution des solutions

Le Visual Studio Tools pour Office Runtime peut consigner toutes les erreurs qui se produisent au démarrage dans un fichier journal ou afficher chacune d'elles dans une boîte de message. Par défaut, ces options sont désactivées. Vous pouvez activer les options en créant des variables d'environnement. Pour plus d'informations, consultez Débogage dans les projets au niveau du document et Débogage dans les projets au niveau de l'application.

Vous pouvez rencontrer les erreurs suivantes au moment du chargement ou de l'exécution des solutions Office.

Impossible de charger le Common Language Runtime ou Microsoft .NET Framework

La version de .NET Framework ciblée par la solution doit être installée sur l'ordinateur de l'utilisateur final. Pour plus d'informations sur les versions de .NET Framework pouvant être ciblées par les solutions Office, consultez Conception et création de solutions Office.

Impossible de trouver ou de charger l'assembly

Ce problème entraîne l'affichage du message d'erreur ci-dessous.

« L'assembly de personnalisation est introuvable ou n'a pas pu être chargé. Vous pouvez tout de même modifier et enregistrer ce document. Contactez votre administrateur ou l'auteur de ce document pour obtenir de l'aide. »

Pour résoudre cette erreur, utilisez les options suivantes :

  • Vérifiez que l'utilisateur a accès à l'emplacement de l'assembly et que l'assembly nommé existe. Pour plus d'informations, consultez Vue d'ensemble des assemblys dans les solutions Office.

  • Si l'assembly est disponible, vérifiez que Word ou Excel exécute une personnalisation, telle qu'un complément, une balise active ou un document dynamique, ayant explicitement chargé .NET Framework 1.1. Pour résoudre ce problème, désactivez toutes les personnalisations qui chargent explicitement .NET Framework 1.1. Cette version de .NET Framework 1.1 ne peut pas être chargée dans le même processus d'application avec une version ultérieure de .NET Framework. Pour plus d'informations, consultez Exécution côte à côte in-process.

    Notes

    Les balises actives sont déconseillées dans Excel 2010 et Word 2010. Pour plus d'informations, consultez Vue d'ensemble des balises actives.

  • Vérifiez si une exception non gérée de l'assembly de personnalisation empêche le chargement de l'assembly. Déboguez votre solution en définissant le débogueur pour qu'il s'arrête sur les exceptions du Common Language Runtime ou en sélectionnant l'option Arrêter lorsque des exceptions dépassent les limites AppDomain ou managées/natives dans la boîte de dialogue Options. Pour plus d'informations, consultez Comment : gérer les erreurs dans les projets Office.

  • Vous pouvez obtenir des informations de dépannage supplémentaires en définissant des variables d'environnement qui permettent à Visual Studio Tools pour Office Runtime d'afficher des messages d'erreur détaillés et d'écrire l'ensemble des actions dans un fichier journal. Pour plus d'informations, consultez Débogage dans les projets au niveau du document et Débogage dans les projets au niveau de l'application.

Un complément ne se charge pas ou est désactivé

Il existe plusieurs moyens de vérifier si un complément d'application ne se charge pas correctement :

  • Si l'application Microsoft Office se ferme de façon inattendue ou si une erreur se produit pendant l'initialisation d'un complément, il est possible que l'application ait désactivé le complément. Pour plus d'informations, consultez Comment : réactiver un complément qui a été désactivé.

  • L'application Microsoft Office peut exécuter un complément ayant explicitement chargé .NET Framework 1.1. Pour résoudre ce problème, désactivez tous les compléments qui chargent explicitement .NET Framework 1.1. Cette version de .NET Framework 1.1 ne peut pas être chargée dans le même processus d'application avec une version ultérieure de .NET Framework. Pour plus d'informations, consultez Exécution côte à côte in-process.

  • Vous pouvez obtenir des informations de dépannage supplémentaires en définissant des variables d'environnement qui permettent à Visual Studio Tools pour Office Runtime d'afficher des messages d'erreur détaillés et d'écrire l'ensemble des actions dans un fichier journal. Pour plus d'informations, consultez Débogage dans les projets au niveau de l'application.

Le type ne peut pas être chargé

Ce problème entraîne l'affichage du message d'erreur suivant :

« Impossible de charger le type NomProjet à partir de l'assembly NomAssembly. »

Ce message peut s'afficher si vous obfusquez le code de votre projet Office. Le fait d'obfusquer du code modifie les noms de toutes les classes. Toutefois, les noms de classes d'origine sont référencés dans le manifeste et l'obfuscateur ne modifie pas le manifeste.

Pour éviter cette erreur, ajoutez les noms des classes générées dans votre projet à la liste des obfuscateurs des classes n'ayant pas besoin d'être renommées.

Le document Office s'ouvre sans erreur, mais le code ne s'exécute pas

Les raisons pour lesquelles le code ne s'exécute pas et qu'aucun message d'erreur ne s'affiche sont notamment les suivantes :

  • Les assemblys PIA (Primary Interop Assembly) d'Office ne sont pas installés dans le Global Assembly Cache, peut-être parce que .NET Framework n'est pas installé sur l'ordinateur, ou parce que les assemblys PIA n'ont pas été installés par le programme d'installation d'Office.

  • Un projet de document Word est ouvert dans Visual Studio sur le même ordinateur. Fermez Visual Studio et rouvrez le document.

Pour plus d'informations, consultez Débogage dans les projets au niveau du document.

Utilisation de propriétés, méthodes et événements spécifiques dans les solutions

Vous pouvez rencontrer les problèmes suivants lors de l'utilisation de propriétés, méthodes et événements spécifiques dans les assemblys PIA Microsoft Office et Visual Studio Tools pour Office Runtime.

L'événement DocumentChange n'est pas déclenché lors de l'ouverture d'un document dans Word

L'événement DocumentChange est déclenché lorsque le document actif est modifié. Il est également souvent déclenché lors de l'ouverture d'un document. Toutefois, du fait des différentes façons dont Word peut ouvrir des documents (par exemple, à partir d'une ligne de commande, de l'Explorateur Windows ou du menu Fichier de Word), l'événement DocumentChange n'est pas toujours déclenché lors de l'ouverture du document. Il doit toujours être déclenché lorsque le document actif est modifié après son ouverture. Si vous voulez exécuter des actions lorsque le document est ouvert, utilisez l'événement Startup.

Les événements Excel sont déclenchés différemment dans Internet Explorer que dans Excel

L'ordre de déclenchement des événements sera différent si le classeur est hébergé dans Internet Explorer ou ouvert dans Excel. De plus, certains des événements sont déclenchés deux fois. Si votre solution inclut Internet Explorer, testez la façon dont la séquence d'événements différente affecte le fonctionnement de votre solution.

L'événement New n'est pas déclenché lorsqu'un document est créé à partir d'un modèle

Lorsque vous utilisez une invite de commandes pour ouvrir un modèle Word et créer un document, vous devez utiliser le commutateur /z pour déclencher l'événement New. Ne placez pas d'espace après /z, sinon Word ouvre le modèle en vue de le modifier au lieu de créer un document basé sur le modèle. Par exemple : winword.exe /z"mytemplate.dot".

Cela revient à utiliser le commutateur /t, excepté qu'en plus, le commutateur /z déclenche l'événement New.

L'événement Open n'est pas déclenché lorsqu'une feuille de calcul XML est ouverte

Si vous basez un projet Excel sur une feuille de calcul non native existante (telle que le format XML Excel), l'événement Open n'est pas déclenché lorsque la feuille de calcul est ouverte.

La méthode BeforeClose s'exécute, mais le classeur de l'utilisateur reste ouvert

Il est possible pour un utilisateur final d'annuler l'opération de fermeture d'un classeur et de continuer à utiliser votre solution après avoir appelé le gestionnaire d'événements BeforeClose. Cela se produit lorsque l'utilisateur effectue des modifications dans une feuille de calcul, puis exécute une action pour fermer le classeur sans l'avoir préalablement enregistré. Le gestionnaire d'événements BeforeClose est appelé, puis l'utilisateur voit s'afficher une boîte de dialogue qui propose l'option d'annuler l'opération de fermeture.

Si vous placez du code dans le gestionnaire d'événements BeforeClose qui ferme les connexions de base de données ou qui exécute d'autres opérations de nettoyage, il est possible que ce code soit appelé pendant que l'utilisateur est encore en train de travailler avec votre solution.

La définition du paramètre Cancel de la boîte de dialogue Enregistrer sous retourne un avertissement incorrect ou entraîne la fermeture inattendue de Word

Si vous affichez la boîte de dialogue Enregistrer sous depuis un gestionnaire d'événements pour l'événement DocumentBeforeSave, et attribuez la valeur false au paramètre Cancel, l'application peut se fermer de façon inattendue. Si vous affectez au paramètre Cancel la valeur true, un message d'erreur indique que l'enregistrement automatique a été désactivé.

La méthode Close entraîne la fermeture inattendue de Word et d'Excel

Lorsque vous appelez la méthode Close d'un document ou d'un classeur à partir d'un formulaire non modal, l'application peut se fermer de façon inattendue. Tous les documents ou classeurs ouverts se fermeront et des données risquent d'être perdues. Si Microsoft Office Outlook utilise Word comme éditeur de courrier électronique, tous les messages électroniques ouverts peuvent également se fermer. Cela peut aussi se produire si vous affichez des Windows Forms ou des messages pendant la gestion de l'événement AppDomain.DomainUnload.

Pour éviter ce problème, n'appelez pas la méthode Close à partir d'un formulaire non modal ou dans un événement d'un formulaire non modal. Utilisez plutôt les procédures suivantes :

  • Utilisez des formulaires modaux (par exemple en utilisant ShowDialog au lieu de Show) si vous devez fermer le document à partir du formulaire.

  • Si vous devez utiliser un formulaire non modal, assurez-vous que le formulaire non modal est fermé et que vos références de formulaire sont complètement détruites avant d'essayer de fermer le document ou le classeur. Le code suivant est fourni à titre d'exemple. Pour utiliser ce code, exécutez-le à partir de la classe ThisDocument dans un projet de niveau document pour Word.

    Dim form1 As SampleForm
    
    Sub OpenForm()
        form1 = New SampleForm
        form1.Show()  ' Show the form modelessly.
    End Sub
    
    Sub ForceShutdown()
    
        ' Completely close the form if it is still running.
        ' Note that hiding the form might not work by itself.
    
        If (Not form1 Is Nothing) Then
            form1.Close()
            form1.Dispose()
            form1 = Nothing
        End If
    
        Me.Close()
    End Sub
    
    SampleForm form1;
    
    private void OpenForm()
    {
        form1 = new SampleForm();
        form1.Show();  // Show form modelessly.
    }
    
    private void ForceShutdown()
    {
        // Completely close the form if it is still running.
        // Note that hiding the form might not work by itself.
    
        if (form1 != null)
        {
            form1.Close();
            form1.Dispose();
            form1 = null;
        }
        object saveChanges = Word.WdSaveOptions.wdSaveChanges; 
        this.Close(ref saveChanges, ref missing, ref missing);
    }
    

Pour plus d'informations sur le passage du paramètre missing en C#, consultez Paramètres optionnels dans les solutions Office.

L'exception InvalidCastException est levée lorsqu'un contrôle hôte Excel est passé à une méthode

Dans Excel, certaines méthodes et propriétés requièrent que vous leur passiez un objet Office natif. Si l'attribut Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute a la valeur false dans un projet ciblant le .NET Framework 3.5 et si vous passez un contrôle d'hôte basé sur un objet Office natif, l'exception InvalidCastException est levée. Vous pouvez utiliser la propriété InnerObject de contrôles hôtes pour passer les objets Office natifs sous-jacents à ces méthodes et propriétés. Pour plus d'informations sur les problèmes de localisation dans Excel, consultez Mise en forme de données dans Excel avec différents paramètres régionaux.

Personnalisation de l'interface utilisateur

Vous pouvez rencontrer les erreurs suivantes lors de l'utilisation de types spécifiques de personnalisations d'interface utilisateur dans les solutions Office.

Les contrôles Windows Forms se comportent de façon imprévisible lorsque la fenêtre de feuille de calcul d'Excel est fractionnée

Si vous fractionnez une fenêtre de feuille de calcul qui contient des contrôles Windows Forms, ces contrôles peuvent ne pas se comporter de la même façon dans les deux fenêtres. Par exemple, si vous exécutez du code pour modifier la propriété BackColor d'un TextBox sur une feuille de calcul, la modification peut n'apparaître que dans une seule des fenêtres.

Impossible d'ajouter des pages de propriétés personnalisées dans des compléments Outlook

Si votre complément Outlook crée une page de propriétés personnalisée pour la boîte de dialogue Options d'Outlook ou pour la boîte de dialogue Propriétés d'un dossier Outlook, vous devez rendre de manière explicite la page de propriétés personnalisée visible dans COM (par défaut, l'assembly n'est pas visible dans COM). Sinon, votre complément ne pourra pas créer la page de propriétés personnalisée, et vous risquez de recevoir un COMException lors du débogage de votre complément.

Il existe deux façons de rendre une page de propriétés personnalisée visible dans COM :

  • Ajoutez un ComVisibleAttribute à la classe qui implémente la page de propriétés personnalisée dans votre projet. Pour plus d'informations sur la façon d'appliquer des attributs à des classes, consultez Application des attributs.

  • Utilisez Visual Studio pour rendre tout l'assembly de votre complément visible dans COM.

    Pour rendre l'assembly du complément visible dans COM à l'aide de Visual Studio

    1. Dans Visual Studio, cliquez avec le bouton droit sur votre projet dans l'Explorateur de solutions, puis cliquez sur Propriétés.

    2. Cliquez sur l'onglet Application.

    3. Cliquez sur le bouton Informations de l'assembly.

    4. Activez la case à cocher Rendre l'assembly visible par COM.

    5. Cliquez sur OK.

Liaison de données à des contrôles et données de mise en mémoire cache

Vous pouvez rencontrer les erreurs suivantes dans les solutions Office qui utilisent la liaison de données ou les données de mise en mémoire cache.

La liaison de données d'un ListObject échoue si une Boîte de dialogue modale est affichée

Si Excel affiche une boîte de dialogue modale pendant la mise à jour du groupe de données qui est lié à un ListObject, la liaison de données du ListObject échoue. Lorsque le ListObject perd la liaison de données, il déclenche l'événement DataBindingFailure. Pour lier à nouveau le ListObject à la source de données, gérez l'événement DataBindingFailure et appelez la méthode SetDataBinding.

Les noms des groupes de données Visual Basic mis en cache n'apparaissent pas correctement dans le cache de données

Les objets DataSet créés à l'aide de Visual Basic et qui sont marqués comme étant Cached et WithEvents (notamment les objets DataSet qui sont déplacés à partir de la fenêtre Sources de données ou de la boîte à outils et dont la propriété CacheInDocument a la valeur True) ont un trait de soulignement comme préfixe à leur nom dans le cache. Par exemple, si vous créez un DataSet et lui attribuez le nom Customers, le nom de CachedDataItem apparaîtra comme _Customers dans le cache. Lorsque vous utilisez ServerDocument pour accéder à cet élément mis en cache, vous devez spécifier _Clients au lieu de Clients.

Utilisation de la classe ServerDocument

Vous pouvez rencontrer les erreurs suivantes dans les solutions Office qui utilisent la classe Microsoft.VisualStudio.Tools.Applications.ServerDocument.

Impossible d'exécuter les applications héritées qui utilisent ServerDocument sur les ordinateurs qui disposent uniquement de Visual Studio 2010 Tools pour Office Runtime

Si vous tentez d'exécuter une application qui utilise la classe Microsoft.VisualStudio.Tools.Applications.ServerDocument Visual Studio Tools pour Office System (version 3.0 Runtime) sur un ordinateur sur lequel seul Visual Studio 2010 Tools pour Office Runtime est installé, l'application peut échouer de façon inattendue. Pour exécuter l'application, installez Visual Studio Tools pour Office System (version 3.0 Runtime) sur l'ordinateur. Les deux versions du runtime peuvent être installées sur un même ordinateur.

Voir aussi

Tâches

Dépannage d'erreurs au moment du design dans les solutions Office

Dépannage de la sécurité des solutions Office

Concepts

Dépannage du déploiement de solutions Office

Autres ressources

Dépannage des solutions Office

Historique des modifications

Date

Historique

Motif

Septembre 2010

Ajout d'informations sur les erreurs relatives à l'installation et au chargement.

Améliorations apportées aux informations.

Mai 2010

Ajout d'une section relative à l'exception FrameworkVersionMismatchException.

Améliorations apportées aux informations.