Partager via


Résoudre les problèmes dans les 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 liés à la création, à la mise à niveau et à 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 Visual Studio n’a pas suffisamment d’informations pour 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 soient 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 figurant sur le document ne sont pas copiées dans le nouveau projet. Réinitialisez les propriétés des contrôles préexistants manuellement. Vous pouvez également conserver les propriétés des contrôles en créant une copie du projet existant au lieu de créer un nouveau projet, ou en chargeant le projet existant dans la nouvelle solution (dans le concepteur) et en effectuant un copier-coller des contrôles du document existant dans 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.

  • Dans Excel : « Avertissement concernant la confidentialité : ce document contient des macros, des contrôles ActiveX, des informations sur le kit d'extension XML ou des composants Web. Ils peuvent renfermer des informations personnelles qui ne peuvent pas être supprimées par l'Inspecteur de document. »
  • Dans Visual Studio : « Le chargement du concepteur n'a pas pu s'effectuer correctement. »

Ces erreurs peuvent se produire si 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, procédez comme suit 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 case à cocher Supprimer les informations personnelles des propriétés du fichier lors de l’enregistrement .
  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 est migrée vers Microsoft Office 2010, le projet ne peut pas être ouvert sur un ordinateur de développement avec uniquement le système Microsoft Office 2007 installé. Vous pouvez voir les erreurs suivantes.

  • « Un ou plusieurs projets de la solution n'ont pas été correctement chargés. Pour plus d'informations, consultez la fenêtre de Sortie. »
  • « 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 HostPackage="{763FDC83-64E5-4651-AC9B-28C4FEB985A1}" par HostPackage="{6CE98B71-D55A-4305-87A8-0D6E368D9600}". Pour un projet Excel, remplacez HostPackage="{B284B16A-C42C-4438-BDCD-B72F4AC43CFB}" par HostPackage="{825100CF-0BA7-47EA-A084-DCF3308DAF74}". Pour un projet Outlook, remplacez HostPackage="{D2B20FF5-A6E5-47E1-90E8-463C6860CB05}" par HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}".

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

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

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

Une fois le projet mis à niveau, vous pouvez désinstaller Visual Studio 2005 Tools for Office Second Edition Runtime à partir 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 concepteur de documents, de classeurs ou de feuilles de calcul dans les projets au niveau du document.

Problème 1 : Le concepteur 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, vérifiez si une boîte de dialogue Excel ou Word est ouverte, et fermez toute boîte de dialogue modale ouverte. Si aucune boîte de dialogue modale n'est ouverte, certaines actions supplémentaires peuvent être requises avant la réponse d'Excel ou de Word.
  • Le projet est en cours de débogage. Pour ouvrir le concepteur, arrêtez ou terminez le débogage.
  • Un complément Excel VSTO qui est installé sur l’ordinateur de développement affiche une boîte de dialogue au démarrage d’Excel. Pour créer un projet de niveau document Excel, vous devez tout d’abord désactiver le complément VSTO.

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

Si vous groupez des contrôles dans 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 apparaissent sous forme de rectangles noirs dans le document ou la feuille de calcul. Vous devez dissocier les contrôles pour 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 en ligne avec du texte peuvent ne pas être visibles. Cela est dû au fait que Visual Studio ouvre des modèles Word en mode Normal . Pour afficher les contrôles, sélectionnez le menu Affichage , pointez sur l’affichage Microsoft Office Word, puis sélectionnez Disposition d’impression.

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

Lorsque Excel ou Word est ouvert dans le concepteur Visual Studio, le fait de cliquer sur le bouton Image clipart sous l’onglet Illustrations du ruban n’ouvre pas le volet Office ClipArt. Pour ajouter de l’image clipart, vous devez ouvrir la copie du classeur ou du document qui se trouve dans le dossier de projet principal (et non 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, une erreur du compilateur comme celle ci-dessous peut s'afficher quand vous essayez d'accéder à un événement particulier d'une 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 possédant des événements implémentent deux interfaces : une interface principale contenant toutes les propriétés et méthodes ,et une interface d'événement contenant les événements exposés par l'objet. Ces interfaces d’événements utilisent la convention d’affectation de noms _<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 en son interface d’événement.

Par exemple, les objets Application possèdent un événement NewWorkbook et une propriété NewWorkbook. Pour gérer l'événement NewWorkbook, effectuez un cast de Application vers l'interface AppEvents_Event. L'exemple de code suivant montre comment procéder 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 AIP Office, consultez 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 un pia Office ne sera pas compilé par défaut. Les classes dans les autorités d’identification personnelle utilisent la classe objectname de convention <d’affectation de noms>, comme DocumentClass 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 génère 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 No-PIA ».
  • Visual C# : « Impossible d’incorporer le type d’interopérabilité « Microsoft.Office.Interop.Word.DocumentClass ». Utilisez l'interface applicable à la place. »

Pour résoudre cette erreur, modifiez le code pour faire référence à l'interface correspondante à la place. Par exemple, au lieu de faire référence à un objet DocumentClass, faites référence à une instance de l'interface Document à la place.

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

Les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5, incorporent automatiquement tous les types d’interopérabilité à partir des AIP Office par défaut. Cette erreur de compilation se produit parce que la fonctionnalité des types interop incorporés fonctionne uniquement avec les interfaces, et non pas avec les classes. Pour plus d’informations sur les interfaces et les classes dans les AIP Office, consultez Vue d’ensemble des classes et des interfaces dans les assemblys d’interopérabilité principaux Office. Pour plus d’informations sur la fonctionnalité types d’interopérabilité incorporées dans les projets Office, consultez Conception et création de solutions Office.

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

Certains noms de classes, 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 située en haut des modèles de projet inclut une constante de qualification abrégée, par exemple :

using Word = Microsoft.Office.Interop.Word;

Cette utilisation de l’instruction Imports/using nécessite de 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 lors de 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 créer 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 doté d'autorisations restreintes, utilisez un document non restreint pendant que vous développez et générez la solution. Ensuite, appliquez les autorisations restreintes au document dans l'emplacement de publication, une fois la solution publiée.

Problème 2 : Les 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 les 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 contrôle NamedRange pour qu'elle devienne la feuille de calcul active avant la suppression du 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. Quand vous recréez le projet, le code est supprimé.

Problèmes lorsque vous déboguez des projets

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

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

Quand vous déboguez une solution Office, l'erreur suivante peut s'afficher.

La personnalisation ne peut pas être installée, 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 de ce message, désinstallez la solution dans 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 dans 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 aux 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 d'affectation de noms de threads qui permet au débogueur de fermer le programme correctement. Si vous créez des threads dans votre solution, vous devez nommer chaque thread avec le préfixe VSTA_ afin de garantir que ces threads sont gérés correctement quand 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, vous pouvez voir le message d’erreur suivant.

La personnalisation n’a pas pu être chargée, car le domaine d’application n’a pas pu être créé.

Visual Studio utilise Fusion, le chargeur d'assembly du .NET Framework, pour mettre en cache les assemblys avant de charger les solutions Office. Assurez-vous que Visual Studio peut écrire dans le cache de Fusion et 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é Edit and Continue

Si vous utilisez Modifier et continuer à apporter des modifications au code dans un projet au niveau du document pour Excel ou Word pendant que le projet est en mode arrêt, vous pouvez voir une boîte de dialogue avec le message d’erreur suivant si vous arrêtez le débogueur.

La fin 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