Actualizar proyectos de Excel y Word para migrarlos a .NET Framework 4 o .NET Framework 4.5Updating Excel and Word Projects that You Migrate to the .NET Framework 4 or the .NET Framework 4.5

Si tiene un proyecto de Word o Excel que use cualquiera de las siguientes características, debe modificar el código si se cambia el marco de trabajo de destino a .NET Framework 4.NET Framework 4 o una versión posterior:If you have an Excel or Word project that uses any of the following features, you must modify your code if the target framework is changed to the .NET Framework 4.NET Framework 4 or later:

Quitar el atributo ExcelLocale1033 de proyectos de ExcelRemoving the ExcelLocale1033 Attribute From Excel Projects

Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute se ha quitado de la parte de Visual Studio 2010 Tools para Office Runtime que se usa para soluciones que tienen como destino la .NET Framework 4.NET Framework 4 o una versión posterior.The Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute has been removed from the portion of the Visual Studio 2010 Tools for Office Runtime that is used for solutions that target the .NET Framework 4.NET Framework 4 or later. El Common Language Runtime (CLR) de .NET Framework 4.NET Framework 4 y versiones posteriores siempre pasa el identificador de configuración regional 1033 al modelo de objetos de Excel y ya no puede usar este atributo para deshabilitar este comportamiento.The common language runtime (CLR) in the .NET Framework 4.NET Framework 4 and later always passes locale ID 1033 to the Excel object model, and you can no longer use this attribute to disable this behavior. Para obtener más información, consulta Globalization and Localization of Excel Solutions.For more information, see Globalization and Localization of Excel Solutions.

Para quitar el ExcelLocale1033AttributeTo remove the ExcelLocale1033Attribute

  1. Con el proyecto abierto en Visual Studio, abra el Explorador de soluciones.With the project open in Visual Studio, open Solution Explorer.

  2. En el nodo Propiedades (en C#) o Mi proyecto (en Visual Basic), haga doble clic en el archivo de código AssemblyInfo para abrirlo en el editor de código.Under the Properties node (for C#) or the My Project node (for Visual Basic), double-click the AssemblyInfo code file to open it in the code editor.

    Nota

    Para ver el archivo de código AssemblyInfo en los proyectos de Visual Basic, haga clic en el botón Mostrar todos los archivos del Explorador de soluciones .In Visual Basic projects, you must click the Show All Files button in Solution Explorer to see the AssemblyInfo code file.

  3. Busque el valor de Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute y quitarlo del archivo o márquelo como comentario fuera.Locate the Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute and either remove it from the file or comment it out.

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

Quitar una referencia a la clase ExcelLocal1033ProxyRemoving a Reference to the ExcelLocal1033Proxy class

Proyectos que se crearon con Microsoft Visual Studio 2005 Tools para Microsoft Office System crean una instancia de Excel Application objeto mediante la clase Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Projects that were created by using Microsoft Visual Studio 2005 Tools for the Microsoft Office System instantiate the Excel Application object by using the Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy class. Esta clase se ha quitado de la parte de Visual Studio 2010 Tools para Office Runtime que se usa para soluciones que tienen como destino la .NET Framework 4.NET Framework 4 o una versión posterior.This class has been removed from the portion of the Visual Studio 2010 Tools for Office Runtime that's used for solutions that target the .NET Framework 4.NET Framework 4 or later. Por lo tanto, debe quitar la línea de código que hace referencia a esta clase o marcarla como comentario.Therefore, you must remove or comment out the line of code that references this class.

Para quitar la referencia a la clase ExcelLocal1033ProxyTo remove the reference to the ExcelLocal1033Proxy class

  1. Abra el proyecto en Visual Studio y, a continuación, abra el Explorador de soluciones.Open the project in Visual Studio, and then open Solution Explorer.

  2. En el Explorador de soluciones, abra el menú contextual para ThisAddin.cs (en C#) o ThisAddin.vb (en Visual Basic) y, a continuación, elija Ver código.In Solution Explorer, open the shortcut menu for ThisAddin.cs (for C#) or ThisAddin.vb (for Visual Basic), and then choose View Code.

  3. En el Editor de código, en la región VSTO generated code , quite o marque como comentario la siguiente línea de código.In the Code Editor, in the VSTO generated code region, remove or comment out the following line of code.

    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);  
    

Actualizar código que usa los métodos HasVstoObject y GetVstoObjectUpdating Code that Uses the GetVstoObject and HasVstoObject Methods

En los proyectos que tienen como destino .NET Framework 3.5, los métodos GetVstoObject o HasVstoObject están disponibles como métodos de extensión en uno de los siguientes objetos nativos del proyecto: Document, Workbook, Worksheet, o ListObject.In projects that target the .NET Framework 3.5, the GetVstoObject or HasVstoObject methods are available as extension methods on one of the following native objects in your project: Document, Workbook, Worksheet, or ListObject. Al llamar a estos métodos, no es necesario pasar un parámetro.When you call these methods, you do not need to pass a parameter. En el ejemplo de código siguiente se muestra cómo utilizar el método GetVstoObject en un complemento de VSTO de Word que tenga como destino .NET Framework 3.5.The following code example demonstrates how to use the GetVstoObject method in a Word VSTO Add-in that targets the .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();  

En los proyectos que tengan como destino la versión .NET Framework 4.NET Framework 4 o posterior, debe modificar el código para acceder a estos métodos de una de las siguientes maneras:In projects that target the .NET Framework 4.NET Framework 4 or later, you must modify your code to access these methods in one of the following ways:

  • Seguirá pudiendo acceder a estos métodos como métodos de extensión en objetos Document, Workbook, Worksheeto ListObject .You can still access these methods as extension methods on Document, Workbook, Worksheet, or ListObject objects. Sin embargo, ahora debe pasar el objeto devuelto por la propiedad Globals.Factory a estos métodos.However, you must now pass the object returned by the Globals.Factory property to these methods.

    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);  
    
  • También puede obtener acceso a estos métodos en el objeto devuelto por la propiedad Globals.Factory.You can alternatively access these methods on the object that is returned by the Globals.Factory property. Si accede a estos métodos de esta manera, debe pasar el objeto nativo que desee extender al método.When you access these methods in this way, you must pass the native object that you want to extend to the method.

    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);  
    

    Para obtener más información, consulta Extending Word Documents and Excel Workbooks in VSTO Add-ins at Run Time.For more information, see Extending Word Documents and Excel Workbooks in VSTO Add-ins at Run Time.

Actualizar código que use instancias de las clases generadas en proyectos de nivel de documentoUpdating Code that Uses Instances of the Generated Classes in Document-Level Projects

En los proyectos de nivel de documento que tengan como destino .NET Framework 3.5, las clases generadas en los proyectos se derivan de las siguientes clases en el Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime:In document-level projects that target the .NET Framework 3.5, the generated classes in the projects derive from the following classes in the Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime:

  • ThisDocument: DocumentThisDocument: Document

  • ThisWorkbook: WorkbookThisWorkbook: Workbook

  • Sheet n: WorksheetSheet n: Worksheet

  • Chart n: ChartSheetChart n: ChartSheet

    En los proyectos que tienen como destino .NET Framework 4.NET Framework 4 o versiones posteriores, los tipos en Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime enumerados anteriormente son interfaces en lugar de clases.In projects that target the .NET Framework 4.NET Framework 4 or later, the types in the Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime listed above are interfaces, instead of classes. Las clases generadas en proyectos que tengan como destino la versión .NET Framework 4.NET Framework 4 o posterior derivan de las siguientes clases nuevas en Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime:The generated classes in projects that target the .NET Framework 4.NET Framework 4 or later derive from the following new classes in the Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime:

  • ThisDocument: DocumentBaseThisDocument: DocumentBase

  • ThisWorkbook: WorkbookBaseThisWorkbook: WorkbookBase

  • Sheet n: WorksheetBaseSheet n: WorksheetBase

  • Chart n: ChartSheetBaseChart n: ChartSheetBase

    Si el código del proyecto hace referencia a una instancia de una de las clases generadas como la clase base de la que se deriva, debe modificar el código.If code in your project refers to an instance of one of the generated classes as the base class that it derives from, you must modify the code.

    Por ejemplo, en un proyecto de libro de Excel que tenga como destino .NET Framework 3.5, podría tener un método auxiliar que realizase algún trabajo en las instancias de las clases Sheetn generadas en su proyecto.For example, in an Excel Workbook project that targets the .NET Framework 3.5, you might have a helper method that performs some work on instances of the generated Sheetn classes in your project.

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 vuelve a establecer el destino del proyecto en .NET Framework 4.NET Framework 4 o una versión posterior, debe realizar uno de los siguientes cambios en el código:If you retarget the project to the .NET Framework 4.NET Framework 4 or later, you must make one of the following changes to your code:

  • Modificar cualquier código que llame al método DoSomethingToSheet para pasar la propiedad Base de un objeto WorksheetBase de su proyecto.Modify any code that calls the DoSomethingToSheet method to pass the Base property of a WorksheetBase object in your project. Esta propiedad devuelve un objeto Worksheet .This property returns a Worksheet object.

    DoSomethingToSheet(Globals.Sheet1.Base)  
    
    DoSomethingToSheet(Globals.Sheet1.Base);  
    
  • Modificar el parámetro de método DoSomethingToSheet para que, en su lugar, espere un objeto WorksheetBase .Modify the DoSomethingToSheet method parameter to expect a WorksheetBase object instead.

    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.  
    }  
    

Actualizar el código que usa controles de Windows Forms en documentosUpdating Code that Uses Windows Forms Controls on Documents

Debe agregar una con (C#) o importaciones instrucción (Visual Basic) para la Microsoft.Office.Tools.Excel o Microsoft.Office.Tools.Word espacio de nombres a la parte superior de cualquier archivo de código que usa la propiedad de controles para agregar Windows Forms controles al documento u hoja de cálculo mediante programación.You must add a using (C#) or Imports (Visual Basic) statement for the Microsoft.Office.Tools.Excel or Microsoft.Office.Tools.Word namespace to the top of any code file that uses the Controls property to add Windows Forms controls to the document or worksheet programmatically.

En proyectos destinados a .NET Framework 3.5, los métodos que agregan controles de formularios Windows Forms (por ejemplo, el método AddButton) se definen en el ControlCollection y ControlCollection clases.In projects that target the .NET Framework 3.5, the methods that add Windows Forms controls (such as the AddButton method) are defined in the ControlCollection and ControlCollection classes.

En los proyectos que tienen como destino la .NET Framework 4.NET Framework 4 o una versión posterior, estos métodos son métodos de extensión que están disponibles en la propiedad de los controles.In projects that target the .NET Framework 4.NET Framework 4 or later, these methods are extension methods that are available on the Controls property. Para usar estos métodos de extensión, el archivo de código en el que usa los métodos debe tener una instrucción using o Imports para el espacio de nombres Microsoft.Office.Tools.Excel o Microsoft.Office.Tools.Word .To use these extension methods, the code file in which you use the methods must have a using or Imports statement for the Microsoft.Office.Tools.Excel or Microsoft.Office.Tools.Word namespace. Esta instrucción se genera automáticamente en los nuevos proyectos que tengan como destino .NET Framework 4.NET Framework 4 o una versión posterior.This statement is generated automatically in new projects that target the .NET Framework 4.NET Framework 4 or later. Sin embargo, esta instrucción no se agrega automáticamente en los proyectos que tienen como destino la versión .NET Framework 3.5, por lo que debe agregarla al cambiar el destino del proyecto.However, this statement is not added automatically in projects that target the .NET Framework 3.5, so you must add it when you retarget the project.

Para obtener más información, consulta Adding Controls to Office Documents at Run Time.For more information, see Adding Controls to Office Documents at Run Time.

Actualizar el código que controla los eventos de control de contenido de WordUpdating Code that Handles Word Content Control Events

En los proyectos que tengan como destino .NET Framework 3.5, el delegado EventHandler<TEventArgs> genérico controla los eventos de los controles de contenido de Word.In projects that target the .NET Framework 3.5, events of Word content controls are handled by the generic EventHandler<TEventArgs> delegate. En los proyectos que tengan como destino .NET Framework 4.NET Framework 4 o una versión posterior, otros delegados controlan estos eventos.In projects that target the .NET Framework 4.NET Framework 4 or later, these events are handled by other delegates.

En la siguiente tabla se enumeran los eventos de control de contenido de Word y los delegados asociados a ellos en proyectos que tengan como destino la versión .NET Framework 4.NET Framework 4 o posterior.The following table lists the Word content control events and the delegates that are associated with them in projects that target the .NET Framework 4.NET Framework 4 or later.

eventoEvent Delegado a usar en proyectos de la versión .NET Framework 4.NET Framework 4 y posteriorDelegate to use in .NET Framework 4.NET Framework 4 and later projects
Added ContentControlAddedEventHandler
ContentUpdating ContentControlContentUpdatingEventHandler
Deleting ContentControlDeletingEventHandler
Entering ContentControlEnteringEventHandler
Exiting ContentControlExitingEventHandler
StoreUpdating ContentControlStoreUpdatingEventHandler

Actualizar el código que usa las clases OLEObject y OLEControlUpdating Code that Uses the OLEObject and OLEControl Classes

En los proyectos que tienen como destino .NET Framework 3.5, puede agregar controles personalizados (como controles de usuario de formularios Windows Forms) a un documento o la hoja de cálculo mediante el uso de las clases Microsoft.Office.Tools.Word.OLEControl y Microsoft.Office.Tools.Excel.OLEObject.In projects that target the .NET Framework 3.5, you can add custom controls (such as Windows Forms user controls) to a document or worksheet by using the Microsoft.Office.Tools.Excel.OLEObject and Microsoft.Office.Tools.Word.OLEControl classes.

En los proyectos que tengan como destino la versión .NET Framework 4.NET Framework 4 o posterior, estas clases se han reemplazado por las interfaces ControlSite y ControlSite .In projects that target the .NET Framework 4.NET Framework 4 or later, these classes have been replaced by the ControlSite and ControlSite interfaces. Debe modificar el código que hace referencia a Microsoft.Office.Tools.Word.OLEControl y Microsoft.Office.Tools.Excel.OLEObject en su lugar hacer referencia a ControlSite y ControlSite.You must modify code that refers to Microsoft.Office.Tools.Excel.OLEObject and Microsoft.Office.Tools.Word.OLEControl to instead refer to ControlSite and ControlSite. Salvo los nuevos nombres, estos controles se comportan de la misma manera que lo hacen en los proyectos que tienen como destino .NET Framework 3.5.Other than the new names, these controls behave the same way that they do in projects that target the .NET Framework 3.5.

Para obtener más información, consulta Adding Controls to Office Documents at Run Time.For more information, see Adding Controls to Office Documents at Run Time.

Actualizar código que usa la propiedad Controls.Item(Object)Updating Code that Uses the Controls.Item(Object) Property

En los proyectos que tienen como destino .NET Framework 3.5, puede usar la propiedad Item (Object) de la colección Microsoft.Office.Tools.Word.Document.Controls o Microsoft.Office.Tools.Excel.Worksheet.Controls para determinar si un documento u hoja de cálculo tiene un control especificado.In projects that target the .NET Framework 3.5, you can use the Item(Object) property of the Microsoft.Office.Tools.Word.Document.Controls or Microsoft.Office.Tools.Excel.Worksheet.Controls collection to determine whether a document or worksheet has a specified control.

En los proyectos que tienen como destino la .NET Framework 4.NET Framework 4 o una versión posterior, la propiedad Item (Object) se ha quitado de estas colecciones.In projects that target the .NET Framework 4.NET Framework 4 or later, the Item(Object) property has been removed from these collections. Para determinar si un documento u hoja de cálculo contiene un control especificado, use el método Contains(System.Object) de la Controls o Controls colección en su lugar.To determine whether a document or worksheet contains a specified control, use the Contains(System.Object) method of the Controls or Controls collection instead.

Para obtener más información acerca de la colección de controles de documentos y hojas de cálculo, consulte agregar controles a documentos de Office en tiempo de ejecución.For more information about the Controls collection of documents and worksheets, see Adding Controls to Office Documents at Run Time.

Actualizar el código que usa colecciones derivadas de CollectionBaseUpdating Code that Uses Collections that Derive from CollectionBase

En los proyectos que tienen como destino .NET Framework 3.5, varios tipos de colección en el Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime derivan de la CollectionBase de la clase, como Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection, y Microsoft.Office.Tools.Word.ControlCollection.In projects that target the .NET Framework 3.5, several collection types in the Runtime de Microsoft Visual Studio Tools para OfficeVisual Studio Tools for Office runtime derive from the CollectionBase class, such as Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection, and Microsoft.Office.Tools.Word.ControlCollection.

Ahora, en los proyectos que tienen como destino la versión .NET Framework 4.NET Framework 4 o una versión posterior, estos tipos de colección son interfaces que no se derivan de CollectionBase.In projects that target the .NET Framework 4.NET Framework 4 or later, these collection types are now interfaces that do not derive from CollectionBase. Algunos miembros ya no están disponibles en estos tipos de colección, como Capacity, Listy InnerList.Some members are no longer available on these collection types, such as Capacity, List, and InnerList.

Vea tambiénSee Also

Migrating Office Solutions to the .NET Framework 4 or later Migrating Office Solutions to the .NET Framework 4 or later
Controles de contenido Content Controls
Extender documentos de Word y libros de Excel en complementos VSTO en tiempo de ejecución Extending Word Documents and Excel Workbooks in VSTO Add-ins at Run Time
Agregar controles a documentos de Office en tiempo de ejecución Adding Controls to Office Documents at Run Time
Acceso global a objetos en los proyectos de OfficeGlobal Access to Objects in Office Projects