Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Si tiene un proyecto de Excel o Word en el que se usa cualquiera de las siguientes características, deberá modificar el código si la versión de .NET Framework de destino pasa a ser .NET Framework 4:
Etiquetas inteligentes
Métodos GetVstoObject y HasVstoObject
Clases generadas en proyectos de nivel de documento
Controles de Windows Forms en documentos
Eventos de los controles de contenido de Word
Clases OLEObject y OLEControl
Propiedad Controls.Item(Object)
Colecciones que derivan de CollectionBase
También debe quitar Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute de los proyectos de Excel redestinados a .NET Framework 4. Visual Studio no quita automáticamente este atributo.
Quitar ExcelLocale1033Attribute de los proyectos de Excel
El atributo Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute se ha quitado de la parte de Visual Studio 2010 Tools para Office Runtime que se utiliza para soluciones destinadas a .NET Framework 4. Common Language Runtime (CLR) de .NET Framework 4 siempre pasa el identificador de configuración regional 1033 al modelo de objetos de Excel y ya no se puede utilizar este atributo para deshabilitar este comportamiento. Para obtener más información, vea Aplicar formato a datos de Excel con varias configuraciones regionales.
Para quitar ExcelLocale1033Attribute
Con el proyecto abierto en Visual Studio, abra el Explorador de soluciones.
Bajo el nodo Propiedades (para C#) o el nodo Mi proyecto (para Visual Basic), haga doble clic en el archivo de código AssemblyInfo de modo que se abra en el editor de código.
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.
Busque el atributo Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute y quítelo del archivo o márquelo como comentario.
<Assembly: ExcelLocale1033Proxy(True)>[assembly: ExcelLocale1033Proxy(true)]
Actualizar el código que crea etiquetas inteligentes
Si tiene un proyecto de Excel o Word que crea etiquetas inteligentes, deberá realizar los siguientes cambios en el código si cambia la versión de .NET Framework de destino:
Modifique cualquier código que cree objetos de etiqueta inteligente y de acción.
Modifique cualquier código que defina una clase de etiqueta inteligente con un reconocedor personalizado.
Nota
Las etiquetas inteligentes están desusadas en Excel 2010 y Word 2010. Para obtener más información, vea Información general sobre etiquetas inteligentes.
Para obtener más información, vea las instrucciones que figuran a continuación.
Crear objetos de etiqueta inteligente y de acción
Debe modificar la manera de crear objetos de etiqueta inteligente y de acción en el código. En los proyectos destinados a .NET Framework 3.5, los tipos de etiqueta inteligente y de acción son clases de las que se pueden crear instancias directamente. En los proyectos destinados a .NET Framework 4, estos tipos son interfaces de las que no se pueden crear instancias directamente.
Si la versión de .NET Framework de destino de un proyecto pasa a ser .NET Framework 4, se deben crear los objetos de etiqueta inteligente y de acción usando los métodos proporcionados por la propiedad Globals.Factory del proyecto. Para obtener más información, vea Arquitectura de las etiquetas inteligentes.
En la siguiente tabla, se muestran los tipos de etiqueta inteligente y de acción así como el método que se usa para crear instancias de los tipos en proyectos destinados a .NET Framework 4.
Tipo de etiqueta inteligente y de acción |
Método de generador que se usa en proyectos destinados a .NET Framework 4 |
|---|---|
Método CreateAction de la clase Microsoft.Office.Tools.Excel.Factory. |
|
Método CreateSmartTag de la clase Microsoft.Office.Tools.Excel.Factory. |
|
Método CreateAction de la clase Microsoft.Office.Tools.Word.Factory. |
|
Método CreateSmartTag de la clase Microsoft.Office.Tools.Word.Factory. |
Definir clases de etiqueta inteligente con reconocedores personalizados
Debe modificar el código si define una clase de etiqueta inteligente propia con un reconocedor personalizado. En proyectos destinados a .NET Framework 3.5, debe derivar la clase de la clase Microsoft.Office.Tools.Word.SmartTag o Microsoft.Office.Tools.Excel.SmartTag. En proyectos destinados a .NET Framework 4, debe definir una clase que implemente la interfaz Microsoft.Office.Tools.Word.ISmartTagExtension o Microsoft.Office.Tools.Excel.ISmartTagExtension.
Para obtener más información, vea Arquitectura de las etiquetas inteligentes.
Actualizar el código que utiliza los métodos HasVstoObject y GetVstoObject
En proyectos destinados a .NET Framework 3.5, los métodos HasVstoObject y GetVstoObject están disponibles como métodos de extensión en uno de los siguientes objetos nativos del proyecto: Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet o Microsoft.Office.Interop.Excel.ListObject. Al llamar a estos métodos, no necesita pasar ningún parámetro. En el siguiente ejemplo de código, se muestra cómo utilizar el método GetVstoObject en un complemento de Word destinado a .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 proyectos destinados a .NET Framework 4, debe modificar el código para obtener acceso a estos métodos de una de las siguientes maneras:
Puede seguir obteniendo acceso a estos métodos como métodos de extensión en los objetos Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.ListObject o Microsoft.Office.Interop.Excel.Worksheet. Sin embargo, deberá pasar a estos métodos el objeto devuelto por la propiedad Globals.Factory.
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);Asimismo, puede obtener acceso a estos métodos en el objeto devuelto por la propiedad Globals.Factory. En este caso, deberá pasar al método el objeto nativo que desee extender.
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, vea Ampliar documentos de Word y libros de Excel en complementos en el nivel de la aplicación en tiempo de ejecución y Obtener objetos extendidos a partir de objetos nativos de Office en personalizaciones en el nivel del documento.
Actualizar el código que utiliza instancias de las clases generadas en proyectos de nivel de documento
En proyectos de nivel de documento destinados a .NET Framework 3.5, las clases generadas en los proyectos se derivan de las siguientes clases del Motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office:
ThisDocument: Microsoft.Office.Tools.Word.Document
ThisWorkbook: Microsoft.Office.Tools.Excel.Workbook
En proyectos destinados a .NET Framework 4, los tipos del Motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office mencionados anteriormente no son clases sino interfaces. Las clases generadas en proyectos destinados a .NET Framework 4 se derivan de las siguientes clases nuevas del Motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office:
ThisDocument: Microsoft.Office.Tools.Word.DocumentBase
ThisWorkbook: Microsoft.Office.Tools.Excel.WorkbookBase
Si el código del proyecto hace referencia a una instancia de una de las clases generadas como clase base de la que se deriva, deberá modificar el código.
Por ejemplo, en un proyecto de libro de Excel destinado a .NET Framework 3.5, puede haber un método auxiliar que use instancias de las clases Sheetn generadas en el proyecto.
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 cambia el destino del proyecto a .NET Framework 4, deberá realizar uno de los siguientes cambios en el código:
Modifique cualquier código que llame al método DoSomethingToSheet para pasar la propiedad Base de un objeto Microsoft.Office.Tools.Excel.WorksheetBase en el proyecto. Esta propiedad devuelve un objeto Microsoft.Office.Tools.Excel.Worksheet.
DoSomethingToSheet(Globals.Sheet1.Base)DoSomethingToSheet(Globals.Sheet1.Base);Modifique el parámetro de método DoSomethingToSheet de modo que se espere un objeto Microsoft.Office.Tools.Excel.WorksheetBase.
Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.WorksheetBase) ' Do something to the worksheet object. End Subprivate void DoSomethingToSheet (Microsoft.Office.Tools.Excel.WorksheetBase worksheet) { // Do something to the worksheet object. }
Actualizar el código que utiliza controles Windows Forms en documentos
Debe agregar una instrucción using (C#) o Imports (Visual Basic) para el espacio de nombres Microsoft.Office.Tools.Excel o Microsoft.Office.Tools.Word al principio de cualquier archivo de código que use la propiedad Controls para agregar controles de Windows Forms al documento o la hoja de cálculo mediante programación.
En proyectos destinados a .NET Framework 3.5, los métodos que agregan controles de Windows Forms (por ejemplo, el método AddButton) se definen en las clases Microsoft.Office.Tools.Word.ControlCollection y Microsoft.Office.Tools.Excel.ControlCollection.
En proyectos destinados a .NET Framework 4, estos métodos son métodos de extensión que están disponibles en la propiedad Controls. Para usar estos métodos de extensión, el archivo de código en el que se usan 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. Esta instrucción se genera automáticamente en los nuevos proyectos destinados a .NET Framework 4. Sin embargo, no se agrega automáticamente en el caso de los proyectos destinados a .NET Framework 3.5, por lo que es necesario agregarla cuando se modifica el destino del proyecto.
Para obtener más información, vea Agregar controles a documentos de Office en tiempo de ejecución.
Actualizar el código que controla eventos de control de contenido de Word
En proyectos destinados a .NET Framework 3.5, los eventos de los controles de contenido de Word los controla el delegado EventHandler<TEventArgs> genérico. En proyectos destinados a .NET Framework 4, son otros delegados los que controlan estos eventos.
En la siguiente tabla figuran los eventos de los controles de contenido de Word y los delegados asociados en proyectos destinados a .NET Framework 4.
Evento |
Delegado que se va a usar en proyectos destinados a .NET Framework 4 |
|---|---|
Actualizar el código que utiliza las clases OLEObject y OLEControl
En proyectos destinados a .NET Framework 3.5, puede agregar controles personalizados (por ejemplo, controles de usuario de Windows Forms) a un documento o una hoja de cálculo utilizando las clases Microsoft.Office.Tools.Word.OLEControl y Microsoft.Office.Tools.Excel.OLEObject.
En proyectos destinados a .NET Framework 4, estas clases se han reemplazado por las interfaces de Microsoft.Office.Tools.Excel.ControlSite y Microsoft.Office.Tools.Word.ControlSite. Debe modificar el código que haga referencia a Microsoft.Office.Tools.Excel.OLEObject y Microsoft.Office.Tools.Word.OLEControl de modo que haga referencia a Microsoft.Office.Tools.Excel.ControlSite y Microsoft.Office.Tools.Word.ControlSite. Aparte de los nuevos nombres, estos controles se comportan de la misma manera que en los proyectos destinados a .NET Framework 3.5.
Para obtener más información, vea Agregar controles a documentos de Office en tiempo de ejecución.
Actualizar el código que utiliza la propiedad Controls.Item(Object)
En proyectos destinados a .NET Framework 3.5, puede utilizar la propiedad Item(Object) property of the Microsoft.Office.Tools.Word.Document.Controls o Microsoft.Office.Tools.Excel.Worksheet.Controls para determinar si un documento o una hoja de cálculo tiene un control concreto.
En proyectos destinados a .NET Framework 4, se ha quitado la propiedad Item(Object) de estas colecciones. Para determinar si un documento o una hoja de cálculo contiene un control concreto, utilice el método Contains(System.Object) de la colección Document.Controls o Worksheet.Controls.
Para obtener más información sobre la colección Controls de documentos y hojas de cálculo, vea Agregar controles a documentos de Office en tiempo de ejecución.
Actualizar el código que utiliza colecciones que derivan de CollectionBase
En proyectos destinados a .NET Framework 3.5, hay varios tipos de colección en Motor en tiempo de ejecución de Microsoft Visual Studio Tools para Office que derivan de la clase CollectionBase, por ejemplo Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection y Microsoft.Office.Tools.Word.ControlCollection.
En proyectos destinados a .NET Framework 4, estos tipos de colección son interfaces que no se derivan de CollectionBase. Algunos miembros ya no están disponibles en estos tipos de colección, como Capacity, List e InnerList.
Vea también
Conceptos
Migrar soluciones de Office a .NET Framework 4
Arquitectura de las etiquetas inteligentes
Agregar controles a documentos de Office en tiempo de ejecución
Acceso global a objetos en los proyectos de Office
Historial de cambios
Fecha |
Historial |
Motivo |
|---|---|---|
|
Mayo de 2010 |
Se ha agregado una sección que explica cómo quitar Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute de los proyectos de Excel. |
Mejora de la información. |