Share via


Résoudre les problèmes liés aux solutions Office

              S’applique à : Visual Studio

Cet article explique comment résoudre les problèmes que vous pouvez rencontrer lorsque vous effectuez différentes tâches lors du développement de solutions Office dans Visual Studio。

Problèmes lors de la création, de la mise à niveau et de l’ouverture de projets

Vous pouvez rencontrer les problèmes suivants lorsque vous créez ou ouvrez des projets Office.

Problème 1 : Impossible de créer le projet

Si une erreur se produit lorsque vous essayez de créer ou d’ouvrir un projet Office, mais que Visual Studio ne dispose pas d’informations suffisantes pour en déterminer la cause, essayez de fermer votre projet, de quitter Visual Studio et de recommencer.

Si vous essayez de créer un projet au niveau du document, il est possible qu’un autre document portant le même nom que le document du nouveau projet soit déjà ouvert dans Excel ou Word. Assurez-vous que toutes les autres instances d’Excel ou de Word sont fermées.

Problème 2 : Les propriétés de contrôle sont perdues lorsque vous créez un projet basé sur un document à partir d’un projet existant

Si vous créez un projet Office basé sur un document à partir d’un projet existant, les propriétés des contrôles qui se trouvent sur le document ne sont pas copiées dans le nouveau projet. Réinitialisez manuellement les propriétés de tous les contrôles préexistants. Vous pouvez également conserver les propriétés du contrôle en créant une copie du projet existant au lieu de créer un projet, ou en chargeant le projet existant dans la nouvelle solution (dans le concepteur) et en copiant et en collant les contrôles du document existant vers le nouveau document.

Problème 3 : Erreurs lors de la création d’un projet de classeur Excel basé sur un classeur existant

Si vous créez un projet de classeur Excel basé sur un classeur existant, vous pouvez voir une combinaison des erreurs suivantes.

  • À partir d’Excel : « Avertissement de confidentialité : ce document contient des macros, des contrôles ActiveX, des informations de pack d’extension XML ou des composants web. Il peut s’agir d’informations personnelles qui ne peuvent pas être supprimées par l’inspecteur de document. »
  • À partir de Visual Studio : « Designer n’a pas pu se charger correctement. »

Ces erreurs peuvent se produire lorsque vous essayez de créer un projet basé sur un classeur dont les informations personnelles ont été supprimées à l’aide de l’inspecteur de document. Pour éviter ce PROBLÈME, effectuez les étapes suivantes avant de créer le projet :

  1. Ouvrez le classeur dans Excel.
  2. Dans Excel, ouvrez le Centre de gestion de la confidentialité.
  3. Sous l’onglet Options de confidentialité, désactivez la zone Supprimer les informations personnelles des propriétés du fichier lors de l’enregistrement case activée.
  4. Enregistrez le classeur et fermez Excel.

Problème 4 : Impossible d’ouvrir un projet après la migration

Une fois qu’une solution Office a été migrée vers Microsoft Office 2010, le projet ne peut pas être ouvert sur un ordinateur de développement sur lequel seul le système Microsoft Office 2007 est installé. Les erreurs suivantes peuvent s’afficher.

  • « Un ou plusieurs projets de la solution n’ont pas été chargés correctement. Consultez la fenêtre Sortie pour plus d’informations. »
  • « Impossible de créer le projet, car l’application associée à ce type de projet n’est pas installée sur cet ordinateur. Vous devez installer l’application Microsoft Office associée à ce type de projet. »

Pour résoudre ce problème, modifiez le fichier .vbproj ou .csproj . Pour un projet Word, remplacez par HostPackage="{763FDC83-64E5-4651-AC9B-28C4FEB985A1}"HostPackage="{6CE98B71-D55A-4305-87A8-0D6E368D9600}". Pour un projet Excel, remplacez par HostPackage="{B284B16A-C42C-4438-BDCD-B72F4AC43CFB}"HostPackage="{825100CF-0BA7-47EA-A084-DCF3308DAF74}". Pour un projet Outlook, remplacez par HostPackage="{D2B20FF5-A6E5-47E1-90E8-463C6860CB05}"HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}".

Vous pouvez également vous assurer que les projets migrés sont ouverts uniquement sur les ordinateurs de développement sur lesquels Microsoft Office 2010 est déjà installé.

Problème 5 : Erreurs dans les projets office 2003 mis à niveau au niveau du document qui contiennent des contrôles Windows Forms

Si vous mettez à niveau un projet de niveau document Microsoft Office 2003 et que le document contient des contrôles Windows Forms, le projet mis à niveau peut comporter des erreurs de compilation ou d’exécution. Pour éviter ce problème, installez visual Studio 2005 Tools for Office Second Edition Runtime sur l’ordinateur de développement avant de mettre à niveau le projet. Cette version du runtime est disponible en tant que package redistribuable à partir du Centre de téléchargement Microsoft à l’adresse Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime (VSTO 2005 SE) (x86).

Une fois que vous avez terminé la mise à niveau du projet, vous pouvez désinstaller visual Studio 2005 Tools for Office Second Edition Runtime de l’ordinateur de développement s’il n’est pas utilisé par d’autres solutions Office.

Problèmes liés à l’utilisation des concepteurs

Vous pouvez rencontrer les problèmes suivants lorsque vous travaillez avec le document, le classeur ou le concepteur de feuilles de calcul dans des projets au niveau du document.

Problème 1 : Designer n’a pas pu se charger correctement

Visual Studio ne peut pas ouvrir le concepteur dans les cas suivants :

  • Excel ou Word est déjà ouvert et affiche une boîte de dialogue modale. Pour ouvrir le concepteur, case activée pour voir si Excel ou Word a une boîte de dialogue modale ouverte et fermer les boîtes de dialogue modales ouvertes. Si aucune boîte de dialogue modale n’est ouverte, une autre action peut être nécessaire avant qu’Excel ou Word réponde.
  • Le projet est en cours de débogage. Pour ouvrir le concepteur, arrêtez ou terminez le débogage.
  • Un complément VSTO Excel installé sur l’ordinateur de développement affiche une boîte de dialogue au démarrage d’Excel. Pour créer un projet excel au niveau du document, vous devez d’abord désactiver le complément VSTO.

Problème 2 : les contrôles apparaissent sous forme de rectangles noirs dans le document ou la feuille de calcul

Si vous regroupez des contrôles sur un document ou une feuille de calcul, Visual Studio ne reconnaît plus les contrôles. Les contrôles groupés ne sont pas accessibles dans la fenêtre Propriétés et s’affichent sous forme de rectangles noirs dans le document ou la feuille de calcul. Vous devez dissocier les contrôles afin de restaurer leurs fonctionnalités.

Problème 3 : Les contrôles d’un modèle Word ne sont pas visibles dans Visual Studio

Si vous ouvrez un modèle Word dans le concepteur Visual Studio, les contrôles du modèle qui ne sont pas alignés avec le texte risquent de ne pas être visibles. Cela est dû au fait que Visual Studio ouvre Word modèles en mode Normal. Pour afficher les contrôles, sélectionnez le menu Affichage, pointez sur Microsoft Office Word Affichage, puis sélectionnez Page.

Problème 4 : La commande Insérer une image clipart ne fait rien dans le concepteur Visual Studio

Quand Excel ou Word est ouvert dans le concepteur Visual Studio, le fait de cliquer sur le bouton Images clipart sous l’onglet Illustrations du ruban n’ouvre pas le volet Office ClipArt. Pour ajouter des images clipart, vous devez ouvrir la copie du classeur ou du document qui se trouve dans le dossier de projet main (et non la copie qui se trouve dans le dossier \bin) en dehors de Visual Studio, ajouter l’image clipart, puis enregistrer le classeur ou le document.

Problèmes lors de l’écriture de code

Vous pouvez rencontrer les problèmes suivants lorsque vous écrivez du code dans des projets Office.

Problème 1 : Certains événements d’objets Office ne sont pas accessibles lors de l’utilisation de C#

Dans certains cas, vous pouvez voir une erreur du compilateur comme celle-ci lorsque vous essayez d’accéder à un événement particulier d’un instance d’un type d’assembly PIA (Primary Interop Assembly) Office dans un projet Visual C#.

Ambiguïté entre « Microsoft.Office.Interop.Excel._Application.NewWorkbook » et « Microsoft.Office.Interop.Excel.AppEvents_Event.NewWorkbook »

Cette erreur signifie que vous essayez d’accéder à un événement portant le même nom qu’une autre propriété ou méthode de l’objet. Pour accéder à l’événement, vous devez convertir l’objet en son interface d’événement.

Les types d’assembly PIA Office qui ont des événements implémentent deux interfaces : une interface principale avec toutes les propriétés et méthodes, et une interface d’événement qui contient les événements exposés par l’objet. Ces interfaces d’événements utilisent la convention de nommage _<objectname>Events<n>Event, comme AppEvents_Event et ApplicationEvents2_Event. Si vous ne pouvez pas accéder à un événement que vous prévoyez de trouver sur un objet, convertissez l’objet dans son interface d’événement.

Par exemple, Application les objets ont un NewWorkbook événement et une NewWorkbook propriété . Pour gérer l’événement NewWorkbook , effectuez un cast vers Application l’interface AppEvents_Event . L’exemple de code suivant montre comment effectuer cette opération dans un projet au niveau du document pour Excel.

private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
    ((Excel.AppEvents_Event)this.Application).NewWorkbook += 
        new Excel.AppEvents_NewWorkbookEventHandler(ThisWorkbook_NewWorkbook);
}

void ThisWorkbook_NewWorkbook(Excel.Workbook Wb)
{
    // Perform some work here.
}

Pour plus d’informations sur les interfaces d’événements dans les API Office, voir Vue d’ensemble des classes et des interfaces dans les assemblys d’interopérabilité principaux Office.

Problème 2 : Impossible de référencer les classes PIA Office dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5

Dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5, le code qui fait référence à une classe définie dans une assembly PIA Office ne sera pas compilé par défaut. Les classes dans les pias utilisent la convention <de nommage objectname>Class, par DocumentClass exemple et WorkbookClass. Par exemple, le code suivant d’un projet de complément VSTO Word ne sera pas compilé.

Word.DocumentClass document = (Word.DocumentClass) Globals.ThisAddIn.Application.ActiveDocument;

Ce code entraîne les erreurs de compilation suivantes :

  • Visual Basic : « La référence à la classe 'DocumentClass' n’est pas autorisée lorsque son assembly est lié à l’aide du mode Non PIA. »
  • Visual C# : « Type d’interopérabilité ' Microsoft.Office.Interop. Word. DocumentClass' ne peut pas être incorporé. Utilisez plutôt l’interface applicable. »

Pour résoudre cette erreur, modifiez plutôt le code pour qu’il référence l’interface correspondante. Par exemple, au lieu de référencer un DocumentClass objet, faites référence à un instance de l’interface à la Document place.

Word.Document document = Globals.ThisAddIn.Application.ActiveDocument;

Les projets qui ciblent le .NET Framework 4 ou le .NET Framework 4.5 incorporent automatiquement tous les types d’interopérabilité à partir des API Office par défaut. Cette erreur de compilation se produit car la fonctionnalité de types d’interopérabilité incorporée fonctionne uniquement avec les interfaces, et non avec les classes. Pour plus d’informations sur les interfaces et les classes dans les API Office, voir Vue d’ensemble des classes et des interfaces dans les assemblys d’interopérabilité principaux Office. Pour plus d’informations sur la fonctionnalité des types d’interopérabilité incorporés dans les projets Office, voir Concevoir et créer des solutions Office.

Problème 3 : Les références aux classes Office ne sont pas reconnues

Certains noms de classe, par exemple Application, se trouvent dans plusieurs espaces de noms tels que Microsoft.Office.Interop.Word et System.Windows.Forms. Pour cette raison, l’instruction Imports/using en haut des modèles de projet inclut une constante de qualification abrégée, par exemple :

using Word = Microsoft.Office.Interop.Word;

Pour utiliser l’instruction Imports/using, vous devez différencier les références aux classes Office avec le qualificateur Word ou Excel, par exemple :

Word.Document doc;

Vous obtiendrez des erreurs si vous utilisez une déclaration non qualifiée, par exemple :

Document doc;  // Class is ambiguous

Même si vous avez importé l’espace de noms Word ou Excel et que vous avez accès à toutes les classes qu’il contient, vous devez qualifier entièrement tous les types avec Word ou Excel pour supprimer l’ambiguïté de l’espace de noms.

Problèmes liés à la génération de projets

Vous pouvez rencontrer les problèmes suivants lorsque vous générez des projets Office.

Problème 1 : Impossible de générer un projet au niveau du document basé sur un document avec des autorisations restreintes

Visual Studio ne peut pas générer de projets au niveau du document si le document dispose d’autorisations restreintes. Si votre projet contient un document disposant d’autorisations restreintes, le projet ne sera pas compilé et vous recevrez le message suivant dans la fenêtre Liste d’erreurs .

Échec de l’ajout de la personnalisation.

Si vous souhaitez inclure un document disposant d’autorisations restreintes, utilisez un document sans restriction pendant que vous développez et générez la solution. Ensuite, appliquez les autorisations restreintes au document dans l’emplacement de publication, après avoir publié la solution.

Problème 2 : Des erreurs du compilateur se produisent après la suppression d’un contrôle NamedRange

Si vous supprimez un NamedRange contrôle d’une feuille de calcul qui n’est pas la feuille de calcul active dans le concepteur, le code généré automatiquement peut ne pas être supprimé de votre projet et des erreurs du compilateur peuvent se produire. Pour vous assurer que le code est supprimé, vous devez toujours sélectionner la feuille de calcul qui contient le NamedRange contrôle pour en faire la feuille de calcul active avant de supprimer le contrôle. Si le code généré automatiquement n’est pas supprimé lorsque vous supprimez le contrôle, vous pouvez faire en sorte que le concepteur supprime le code en activant la feuille de calcul et en apportant une modification afin que la feuille de calcul soit marquée comme modifiée. Lorsque vous régénérez le projet, le code est supprimé.

Problèmes liés au débogage de projets

Vous pouvez rencontrer les problèmes suivants lorsque vous déboguez des projets Office.

Problème 1 : L’invite à désinstaller s’affiche lorsque vous publiez et installez une solution sur l’ordinateur de développement

Lorsque vous déboguez une solution Office, vous pouvez voir l’erreur suivante.

Impossible d’installer la personnalisation, car une autre version est actuellement installée et ne peut pas être mise à niveau à partir de cet emplacement.

Cette erreur indique que vous avez déjà publié et installé la solution Office sur votre ordinateur de développement. Pour empêcher l’affichage du message, désinstallez la solution de la liste des programmes installés sur l’ordinateur avant de déboguer la solution. Vous pouvez également créer un autre compte d’utilisateur sur votre ordinateur de développement pour tester l’installation de la solution publiée.

Problème 2 : Les projets au niveau du document créés à des emplacements réseau UNC ne s’exécutent pas à partir de Visual Studio

Si vous créez un projet au niveau du document pour Excel ou Word à un emplacement réseau UNC, vous devez ajouter l’emplacement du document à la liste des emplacements approuvés dans Excel ou Word. Sinon, la personnalisation ne sera pas chargée lorsque vous essayez d’exécuter ou de déboguer le projet dans Visual Studio. Pour plus d’informations sur les emplacements approuvés, consultez Accorder une approbation à des documents.

Problème 3 : Les threads ne sont pas arrêtés correctement après le débogage

Les projets Office dans Visual Studio suivent une convention de nommage de thread qui permet au débogueur de fermer correctement le programme. Si vous créez des threads dans votre solution, vous devez nommer chaque thread avec le préfixe VSTA_ pour vous assurer que ces threads sont gérés correctement lorsque vous arrêtez le débogage. Par exemple, vous pouvez définir la Name propriété d’un thread qui attend qu’un événement réseau VSTA_NetworkListener.

Problème 4 : Impossible d’exécuter ou de déboguer une solution Office sur l’ordinateur de développement

Si vous ne pouvez pas exécuter ou développer un projet Office sur votre ordinateur de développement, le message d’erreur suivant peut s’afficher.

Impossible de charger la personnalisation, car le domaine d’application n’a pas pu être créé.

Visual Studio utilise Fusion, le chargeur d’assemblys .NET Framework, pour mettre en cache les assemblys avant de charger les solutions Office. Vérifiez que Visual Studio peut écrire dans le cache Fusion, puis réessayez. Pour plus d’informations, consultez Assemblys de cliché instantané.

Problème 5 : Erreur lors de l’arrêt du débogueur dans un projet au niveau du document après avoir utilisé Modifier et Continuer

Si vous utilisez Modifier et Continuer pour apporter des modifications au code dans un projet au niveau du document pour Excel ou Word alors que le projet est en mode Arrêt, une boîte de dialogue avec le message d’erreur suivant peut s’afficher si vous arrêtez ensuite le débogueur.

L’arrêt du processus dans son état actuel peut entraîner des résultats indésirables, notamment la perte de données et l’instabilité du système.

Que vous sélectionnez Oui ou Non dans la boîte de dialogue, Visual Studio met fin au processus Excel ou Word et arrête le débogueur. Pour arrêter le débogage du projet sans afficher cette boîte de dialogue, quittez Excel ou Word directement au lieu d’arrêter le débogueur dans Visual Studio.

References