Partager via


Mise à jour des projets Excel et Word qui font l'objet d'une migration vers .NET Framework 4 ou .NET Framework 4.5

Si vous avez un projet excel ou word qui utilise les fonctionnalités suivantes l'une des, vous devez modifier votre code si la version cible du. Net Framework est modifiée à .NET Framework 4 ou à .NET Framework 4.5:

  • Méthodes GetVstoObject et HasVstoObject

  • Classes générées dans les projets au niveau du document

  • Contrôles Windows Forms sur les documents

  • Événements de contrôle de contenu Word

  • Classes OLEObject et OLEControl

  • Propriété Controls.Item(Object)

  • Collections dérivant de CollectionBase

Vous devez également supprimer Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute et les références à la classe d' Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy des projets Excel reciblés vers .NET Framework 4 ou à .NET Framework 4.5. Visual Studio ne supprime pas cet attribut ou la référence de classe pour vous.

Suppression de l'attribut ExcelLocale1033 des projets Excel

Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute a été supprimé de la partie de Visual Studio 2010 tools pour Office Runtime utilisée pour les solutions qui ciblent .NET Framework 4 ou .NET Framework 4.5.Le common langage runtime (CLR) dans .NET Framework 4 et .NET Framework 4.5 passe toujours l'ID de paramètres régionaux 1033 au modèle objet Excel, et vous ne pouvez utiliser cet attribut pour désactiver ce comportement.Pour plus d'informations, consultez Globalisation et localisation de solutions Excel.

Pour supprimer l'attribut ExcelLocale1033

  1. Avec le projet ouvert dans Visual Studio, ouvrez l'Explorateur de solutions.

  2. Sous le nœud Propriétés (pour C#) ou le nœud My Project (pour Visual Basic), double-cliquez sur le fichier de code AssemblyInfo pour l'ouvrir dans l'éditeur de code.

    [!REMARQUE]

    Dans les projets Visual Basic, vous devez cliquer sur le bouton Afficher tous les fichiers de l'Explorateur de solutions pour afficher le fichier de code AssemblyInfo.

  3. Localisez le Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute et supprimez-le du fichier ou commentez-le.

    <Assembly: ExcelLocale1033Proxy(True)>
    
    [assembly: ExcelLocale1033Proxy(true)]
    

Suppression d'une référence à la classe d'ExcelLocal1033Proxy

Les projets créés à l'aide de Microsoft Visual Studio 2005 Tools pour Microsoft Office System instancient l'objet excel Microsoft.Office.Interop.Excel.Application à l'aide de la classe d' Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy .Cette classe a été supprimée de la partie de Visual Studio 2010 tools pour Office Runtime utilisée pour les solutions qui ciblent .NET Framework 4 ou .NET Framework 4.5.Par conséquent, vous devez supprimer ou commenter la ligne de code qui référence cette classe.

Pour supprimer la référence à la classe d'ExcelLocal1033Proxy

  1. Ouvrez le projet dans Visual Studio, puis ouvrez Explorateur de solutions.

  2. Dans Explorateur de solutions, ouvrez le menu contextuel pour ThisAddin.cs (pour le c) ou ThisAddin.vb (pour Visual Basic), puis choisissez Afficher le code.

  3. Dans l'éditeur de code, dans une région d' VSTO generated code, supprimez ou commentez la ligne de code suivante.

    Me.Application = CType(Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(GetType(Excel.Application), Me.Application), Excel.Application)
    
    this.Application = (Excel.Application)Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(typeof(Excel.Application), this.Application);
    

Mise à jour de code utilisant les méthodes GetVstoObject et HasVstoObject

Dans les projets qui ciblent le .NET Framework 3.5, les méthodes GetVstoObject ou HasVstoObject sont disponibles comme méthodes d'extension sur l'un des objets natifs suivants de votre projet : Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet ou Microsoft.Office.Interop.Excel.ListObject.Lorsque vous appelez ces méthodes, il n'est pas nécessaire de passer un paramètre.L'exemple de code suivant montre comment utiliser la méthode GetVstoObject dans un complément Word qui cible le .NET Framework 3.5.

Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
    Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject()
Microsoft.Office.Tools.Word.Document vstoDocument = 
    Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject();

Dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5, vous devez modifier votre code pour accéder à ces méthodes dans l'une des façons suivantes :

  • Vous pouvez toujours accéder à ces méthodes comme méthodes d'extension sur les objets Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet ou Microsoft.Office.Interop.Excel.ListObject.Toutefois, vous devez maintenant passer l'objet retourné par la propriété Globals.Factory à ces méthodes.

    Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory)
    
    Microsoft.Office.Tools.Word.Document vstoDocument = 
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory);
    
  • Vous pouvez aussi accéder à ces méthodes sur l'objet retourné par la propriété Globals.Factory.Lorsque vous accédez à ces méthodes de cette façon, vous devez passer l'objet natif que vous souhaitez étendre à la méthode.

    Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
        Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument)
    
    Microsoft.Office.Tools.Word.Document vstoDocument = 
        Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);
    

Pour plus d'informations, consultez Extension de documents Word et de classeurs Excel dans des compléments d'application au moment de l'exécution..

Mise à jour de code utilisant des instances des classes générées dans les projets au niveau du document

Dans les projets au niveau du document qui ciblent le .NET Framework 3.5, les classes générées dans les projets dérivent des classes suivantes du Visual Studio Tools pour Office Runtime :

Dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5, les types de Visual Studio Tools pour Office Runtime indiqué ci-dessus sont des interfaces, et non des classes.Les classes générées dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5 dérivent des nouvelles classes suivantes dans Visual Studio Tools pour Office Runtime:

Si le code de votre projet fait référence à une instance de l'une des classes générées comme classe de base de laquelle elle dérive, vous devez modifier le code.

Par exemple, dans un projet de classeur Excel qui cible le .NET Framework 3.5, vous pouvez avoir une méthode d'assistance qui exécute un travail sur les instances des classes nSheet générées.

Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.Worksheet)
    ' Do something to the worksheet object.
End Sub
private void DoSomethingToSheet(Microsoft.Office.Tools.Excel.Worksheet worksheet)
{
    // Do something to the worksheet object.
}

Si vous reciblez le projet vers .NET Framework 4 ou à .NET Framework 4.5, vous devez effectuer l'une des modifications suivantes à votre code :

  • Modifiez tout code qui appelle la méthode DoSomethingToSheet pour qu'il passe la propriété Base d'un objet Microsoft.Office.Tools.Excel.WorksheetBase de votre projet.Cette propriété retourne un objet Microsoft.Office.Tools.Excel.Worksheet.

    DoSomethingToSheet(Globals.Sheet1.Base)
    
    DoSomethingToSheet(Globals.Sheet1.Base);
    
  • Modifiez le paramètre de méthode DoSomethingToSheet pour attendre à la place un objet Microsoft.Office.Tools.Excel.WorksheetBase.

    Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.WorksheetBase)
        ' Do something to the worksheet object.
    End Sub
    
    private void DoSomethingToSheet (Microsoft.Office.Tools.Excel.WorksheetBase worksheet)
    {
        // Do something to the worksheet object.
    }
    

Mise à jour de code utilisant des contrôles Windows Forms dans les documents

Vous devez ajouter une instruction using (C#) ou Imports (Visual Basic) pour l'espace de noms Microsoft.Office.Tools.Excel ou Microsoft.Office.Tools.Word en haut de tout fichier de code qui utilise la propriété Controls pour ajouter par programmation des contrôles Windows Forms au document ou à la feuille de calcul.

Dans les projets qui ciblent le .NET Framework 3.5, les méthodes qui ajoutent des contrôles Windows Forms (telles que la méthode AddButton ) sont définies dans les classes Microsoft.Office.Tools.Word.ControlCollection et Microsoft.Office.Tools.Excel.ControlCollection.

Dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5, ces méthodes sont des méthodes d'extension qui sont disponibles dans la propriété d' Controls .Pour utiliser ces méthodes d'extension, le fichier de code dans lequel vous utilisez les méthodes doit avoir une instruction using ou Imports pour l'espace de noms Microsoft.Office.Tools.Excel ou Microsoft.Office.Tools.Word.Cette instruction est générée automatiquement dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5.Toutefois, cette instruction n'est pas ajoutée automatiquement aux projets qui ciblent le .NET Framework 3.5, vous devez donc l'ajouter lorsque vous reciblez le projet.

Pour plus d'informations, consultez Ajout de contrôles à des documents Office au moment de l'exécution.

Mise à jour de code gérant des événements de contrôle de contenu Word

Dans les projets qui ciblent le .NET Framework 3.5, les événements de contrôles de contenu Word sont contrôlés par le délégué générique EventHandler<TEventArgs>.Dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5, ces événements sont contrôlés par d'autres délégués.

Le tableau suivant répertorie les événements de contrôle de contenu Word et les délégués qui leur sont associés dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5.

Événement

Délégué à utiliser dans .NET Framework 4 et les projets d' .NET Framework 4.5

Added

ContentControlAddedEventHandler

ContentUpdating

ContentControlContentUpdatingEventHandler

Deleting

ContentControlDeletingEventHandler

Entering

ContentControlEnteringEventHandler

Exiting

ContentControlExitingEventHandler

StoreUpdating

ContentControlStoreUpdatingEventHandler

Mise à jour de code utilisant les classes OLEObject et OLEControl

Dans les projets qui ciblent le .NET Framework 3.5, vous pouvez ajouter des contrôles personnalisés (tels que des contrôles utilisateur Windows Forms) à un document ou une feuille de calcul à l'aide des classes Microsoft.Office.Tools.Word.OLEControl et Microsoft.Office.Tools.Excel.OLEObject.

Dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5, ces classes ont été remplacées par les interfaces d' Microsoft.Office.Tools.Excel.ControlSite et d' Microsoft.Office.Tools.Word.ControlSite .Vous devez modifier le code qui fait référence à Microsoft.Office.Tools.Excel.OLEObject et Microsoft.Office.Tools.Word.OLEControl pour qu'il fasse référence à la place à Microsoft.Office.Tools.Excel.ControlSite et Microsoft.Office.Tools.Word.ControlSite.En dépit de leurs nouveaux noms, ces contrôles se comportent de la même façon que dans les projets qui ciblent le .NET Framework 3.5.

Pour plus d'informations, consultez Ajout de contrôles à des documents Office au moment de l'exécution.

Mise à jour de code utilisant la propriété Controls.Item(Object)

Dans les projets qui ciblent le .NET Framework 3.5, vous pouvez utiliser la propriété Item(Object) de la collection Microsoft.Office.Tools.Word.Document.Controls ou Microsoft.Office.Tools.Excel.Worksheet.Controls pour déterminer si un document ou une feuille de calcul possède un contrôle spécifié.

Dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5, la propriété d' Item(Object) a été supprimée de ces collections.Pour déterminer si un document ou une feuille de calcul contient un contrôle spécifié, utilisez la méthode Contains(System.Object) de la collection Document.Controls ou Worksheet.Controls.

Pour plus d'informations sur la collection de documents et de feuilles de calcul Controls, consultez Ajout de contrôles à des documents Office au moment de l'exécution.

Mise à jour de code utilisant des collections dérivant de CollectionBase

Dans les projets qui ciblent .NET Framework 3.5, plusieurs types de collections de Visual Studio Tools pour Office Runtime dérivent de la classe CollectionBase, tels que Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection et Microsoft.Office.Tools.Word.ControlCollection.

Dans les projets qui ciblent .NET Framework 4 ou .NET Framework 4.5, ces types de collections sont maintenant des interfaces qui ne dérivent pas de CollectionBase.Certains membres ne sont plus disponibles sur ces types de collections, tels que Capacity, List et InnerList.

Voir aussi

Concepts

Migration de solutions Office vers .NET Framework 4 ou .NET Framework 4.5

Contrôles de contenu

Extension de documents Word et de classeurs Excel dans des compléments d'application au moment de l'exécution.

Ajout de contrôles à des documents Office au moment de l'exécution

Accès global aux objets dans les projets Office