Partager via


Mise à niveau de Visual Studio Tools pour Office, version 2003

Mise à jour : novembre 2007

Après avoir effectué une mise à niveau de Visual Studio Tools pour Office, version 2003 vers Microsoft Visual Studio 2005 Tools pour Microsoft Office System (Visual Studio Tools pour Office), vous devez exécuter manuellement certaines étapes de mise à niveau pour les projets au niveau du document.

Dans le nouveau système de projet, les modèles de code de projet ont considérablement changé. Votre projet mis à niveau possède la nouvelle structure de projet, mais votre code demeure dans le fichier de code d'origine qui était basé sur le modèle de code de projet antérieur. Pour permettre à la solution de s'exécuter immédiatement après la mise à niveau, la classe du nouveau projet instancie l'ancienne classe importée (classe d'origine qui était nommée par défaut OfficeCodeBehind). Pour effectuer une mise à niveau complète, vous devez déplacer le code de l'ancienne classe OfficeCodeBehind vers la nouvelle classe du document, du classeur ou de la feuille, comme décrit dans cette rubrique.

Nouveau système de projet et nouvelle structure

Le système de projet de Visual Studio Tools pour Office, version 2003 disposait d'un seul fichier de classe principal pour votre code. Le nouveau système de projet propose une structure de conteneur dans l'Explorateur de solutions qui représente le document ou le classeur. Les fichiers de classe de votre code se trouvent sous la structure de conteneur. Sous ces fichiers de classe se trouvent des fichiers masqués qui contiennent le code généré par Visual Studio Tools pour Office. Il est préférable de ne pas modifier le code des fichiers masqués, car ils peuvent être régénérés au cours du développement et vos modifications seront perdues.

Projets de modèle et de classeur Excel

Les projets de modèle et de classeur Excel contiennent à présent un fichier de classe distinct pour chaque feuille de calcul et un fichier de classe pour le classeur dans son ensemble. Le code spécifique à une feuille de calcul, tel que le code qui répond à un contrôle sur une feuille de calcul, doit être placé dans la classe de feuille. Pour les nouveaux documents, ces classes sont nommées par défaut Sheet1.vb ou Sheet1.cs, Sheet2.vb ou Sheet2.cs, et ainsi de suite. Le code qui affecte le classeur de façon générale, tel que l'événement Open de classeur, l'événement BeforeClose et le code du volet Actions, doit être placé dans la classe de classeur. Par défaut, cette classe est nommée ThisWorkbook.vb ou ThisWorkbook.cs.

Projets de modèle et de document Word

Les projets de modèle et de document Word ont un fichier de code destiné à contenir tout le code se rapportant au document. Par défaut, cette classe est nommée ThisDocument.vb ou ThisDocument.cs.

Pour plus d'informations, consultez Modèles de projet Office.

Processus de mise à niveau

Lorsque vous mettez à niveau votre projet, Visual Studio effectue les tâches suivantes :

  • Il met à niveau le projet pour respecter le nouveau format de fichier et la nouvelle structure de projet.

  • Il copie le document existant dans le nouveau dossier du projet.

  • Il supprime les propriétés de document personnalisées _AssemblyName0 et _AssemblyLocation0 pour empêcher les extensions de code managé existantes de s'exécuter (ces propriétés sont à nouveau ajoutées lorsque le projet est généré).

  • Il ajoute le fichier de code principal d'origine, mais intègre des commentaires pour expliquer ce qui s'est passé et renomme le fichier de <NomDocument> en <NomDocument>(ancien).

  • Il ajoute tous les fichiers du projet d'origine au nouveau projet.

  • Il ajoute toutes les références existantes au nouveau projet.

Aucun code existant n'est migré vers les nouvelles classes. À la place, la méthode _Startup de l'ancienne classe principale est appelée à partir de la méthode Startup de la nouvelle classe principale. Cette opération instancie l'ancienne classe de sorte que la solution s'exécute de la même manière que dans l'ancienne version.

Le nom par défaut de la classe dans <NomDocument>(ancien) est OfficeCodeBehind. Dans un projet Word mis à niveau, le nom par défaut de la classe principale est ThisDocument. Dans un projet Excel mis à niveau, les noms par défaut des classes principales sont ThisWorkbook pour la classe qui inclut le code s'exécutant au niveau du classeur et Sheet1, Sheet2 et ainsi de suite pour le code qui s'exécute au niveau de la feuille de calcul.

Pour effectuer la mise à niveau, vous devez effectuer les opérations suivantes :

  • Déplacez manuellement votre code de l'ancienne classe (qui avait le nom par défaut OfficeCodeBehind) vers les nouvelles classes de document, classeur et feuille, puis supprimez l'ancien fichier de code. Toutefois, si vous souhaitez simplement conserver le code existant tel quel, vous pouvez laisser l'ancien fichier de code et exécuter le code en l'appelant à partir des nouvelles classes. Tout nouveau code ajouté par les outils est placé dans les nouvelles classes.

  • Mettez à jour votre code comme décrit ci-dessous.

  • Remplacez tous les contrôles ActiveX par des contrôles managés.

Vous pouvez également effectuer les opérations suivantes :

  • Refactorisez votre code C#.

Déplacement du code de l'ancienne classe principale vers la nouvelle classe

Il est recommandé de déplacer votre code de l'ancienne classe vers les nouvelles classes, afin que vous puissiez tirer parti des outils de Visual Studio. Les outils utilisent automatiquement les nouvelles classes lorsqu'ils génèrent du code. Par exemple, si vous ajoutez un bouton à votre document et double-cliquez dessus pour accéder au code, le gestionnaire d'événements par défaut est ajouté à la nouvelle classe.

Si vous mettez à niveau une solution Excel, veillez à réfléchir à la classe qui doit contenir chaque méthode que vous déplacez. Si la méthode se rapporte de manière générale au classeur et/ou à toutes les feuilles, vous devez placer le code dans la classe ThisWorkbook. Si le code se rapporte à une feuille, par exemple le code d'un contrôle sur une feuille, le code appartient à la classe de feuille appropriée.

Pour vous aider, le code généré dans la nouvelle classe ThisDocument ou ThisWorkbook contient des méthodes d'espace réservé commentées. Vous pouvez utiliser ces méthodes de deux façons :

  • Prenez tout le code de l'ancienne classe et placez-le dans les nouvelles classes qui sont fournies dans la solution mise à niveau.

  • Écrivez du code dans les nouvelles méthodes pour appeler les anciennes méthodes de l'ancienne classe. Pour que cela fonctionne, vous devez modifier les méthodes de l'ancienne classe afin qu'elles ne soient plus privées.

Exemples

Vous trouverez ci-dessous des exemples de méthodes d'espace réservé qui instancient l'ancienne classe et appellent des méthodes de cette classe :

Private Sub ThisDocument_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
    Handles Me.Startup

    OldCode = New OfficeCodeBehind()
    OldCode._Startup(Me.ThisApplication, Me)
End Sub

''Private Sub ThisDocument_Open() Handles MyBase.Open
''    OldCode.ThisDocument_Open()
''End Sub
''
''Private Sub ThisDocument_Close() Handles MyBase.CloseEvent
''    OldCode.ThisDocument_Close()
''End Sub
private void ThisDocument_Startup(object sender, System.EventArgs e)
{
    OldCode = new OfficeCodeBehind();
    OldCode._Startup(this.Application, this);
}

//private void ThisDocument_Open()
//{
//    OldCode.ThisDocument_Open()
//}
//
//private void ThisDocument_Close(ref bool Cancel)
//{
//    OldCode.ThisDocument_Close(ref Cancel)
//}

Une fois que tout votre code a été déplacé vers les nouvelles classes, supprimez l'ancienne classe.

Mise à jour de votre code

Quelques modifications de votre code peuvent être nécessaires si celui-ci fait référence à Application, appelle certains événements ou certaines méthodes ou repose sur l'événement Open.

Qualification de l'application

Dans Visual Studio Tools pour Office, version 2003, l'utilisation non qualifiée de Application faisait référence au type System.Windows.Forms.Application. Dans Visual Studio Tools pour Office, elle fait référence à l'objet Application Word ou Excel. Cela signifie que vous devez mettre à jour toute référence non qualifiée à Application avec l'espace de noms qualifié complet System.Windows.Forms.Application pour obtenir les mêmes résultats. Par exemple, si vous utilisez du code tel que Application.Run(New Form1) pour ouvrir un formulaire, vous devez le réécrire sous la forme System.Windows.Forms.Application.Run(New Form1).

Attribution d'un nouveau nom aux événements et aux méthodes

Word et Excel exposent certains événements qui portent le même nom que certaines méthodes du modèle objet. Par exemple, les documents Word disposent d'un événement Close et d'une méthode Close. Le code de la solution Visual Studio Tools pour Office requiert un nom différent pour l'un des membres. Vous devez donc remplacer toutes les références existantes aux membres suivants par les nouveaux noms.

Word.Document

Excel.Worksheet

Excel.Workbook

Excel.Chart

Gestion de l'événement Open

Les projets mis à niveau ne déclenchent pas l'événement Open pour les classeurs Excel ni l'événement Open pour les documents Word. Si votre code repose sur l'événement Open, vous devez déplacer votre code vers le gestionnaire d'événements ThisWorkbook_Open() dans la nouvelle classe ThisWorkbook pour les classeurs Excel ou le gestionnaire d'événements ThisDocument_Open() dans la nouvelle classe ThisDocument pour les documents Word. Vous pouvez également appeler le gestionnaire d'événements Open à partir de la méthode _Startup de la classe OfficeCodeBehind d'origine.

Remplacement des contrôles ActiveX par des contrôles managés

Si vous utilisiez des contrôles ActiveX dans votre document ou classeur, vous devez les supprimer et les remplacer par des contrôles managés de la Boîte à outils Visual Studio. Les contrôles ActiveX sont soumis à des restrictions dans les nouveaux projets Visual Studio Tools pour Office. Par exemple, vous ne pouvez pas lier de données à des contrôles ActiveX et vous devez utiliser un assembly d'interopérabilité spécial pour pouvoir les coder. Par conséquent, l'utilisation des contrôles ActiveX n'est pas prise en charge dans les nouveaux projets Visual Studio Tools pour Office.

Refactorisation de votre code (C# uniquement)

Visual Studio fournit des outils pour vous aider à organiser et classer votre code C# ; ce processus est connu sous le nom de refactorisation. Un menu Refactoriser qui contient ces outils est ajouté à Visual Studio lorsque le fichier de code est ouvert dans l'éditeur de code. Pour plus d'informations, consultez Refactorisation.

Voir aussi

Tâches

Comment : mettre à niveau des solutions Visual Studio Tools pour Office

Concepts

Vue d'ensemble des assemblys dans les solutions Office

Mise à niveau et migration de solutions Office