Compartir a través de


Actualizar Visual Studio Tools para Office, versión 2003

Actualización: noviembre 2007

Después de actualizar de Visual Studio Tools para Office, versión 2003 a Microsoft Visual Studio 2005 Tools para Microsoft Office System (Visual Studio Tools para Office), debe realizar manualmente ciertos pasos de actualización para los proyectos de nivel de documento.

En el nuevo sistema de proyectos, las plantillas de código de proyecto han cambiado significativamente. El proyecto actualizado tiene la nueva estructura de proyecto, pero el código sigue estando en el archivo de código original basado en la plantilla anterior. Para que la solución se pueda ejecutar inmediatamente tras la actualización, la nueva clase de proyecto crea instancias de la clase antigua importada (la clase original denominada OfficeCodeBehind de manera predeterminada). Para realizar una actualización completa, debe mover el código de la clase OfficeCodeBehind antigua al nuevo documento, libro o clase de hoja como se describe en este tema.

Sistema de proyectos y estructura nuevos

El sistema de proyectos de Visual Studio Tools para Office, versión 2003 tiene un solo archivo de clase principal para el código. El nuevo sistema de proyectos presenta una estructura de contenedor en el Explorador de soluciones, que representa el documento o el libro. Los archivos de clase del código están en la estructura de contenedor. En estos archivos de clase se ocultan archivos que contienen el código generado por Visual Studio Tools para Office. No conviene modificar el código de los archivos ocultos, ya que se pueden generar de nuevo durante el desarrollo y se perderían los cambios.

Proyectos de libro y plantilla de Excel

Los proyectos de libro y plantilla de Excel contienen ahora un archivo de clase independiente para cada hoja de cálculo y otro archivo de clase para el libro en su totalidad. El código específico de cada hoja de cálculo (por ejemplo, el que responde a un control contenido en ella) se debe colocar en la clase de la hoja. El nombre predeterminado de estas clases para los documentos nuevos es Sheet1.vb o Sheet1.cs, Sheet2.vb o Sheet2.cs, etc. El código que afecta al libro en general, como el evento Open del libro, el evento BeforeClose y el código del panel de acciones, se debe colocar en la clase correspondiente al libro completo. De manera predeterminada, esta clase se denomina ThisWorkbook.vb o ThisWorkbook.cs.

Proyectos de documento y plantilla de Word

Los proyectos de documento y plantilla de Word tienen un archivo de código que contiene todo el código relacionado con el documento. De manera predeterminada, esta clase se denomina ThisDocument.vb o ThisDocument.cs.

Para obtener más información, vea Plantillas de proyecto de Office.

Proceso de actualización

Cuando se actualiza el proyecto, Visual Studio realiza las tareas siguientes:

  • Actualiza el proyecto de modo que se ajuste al nuevo formato de archivo y a la nueva estructura de proyecto.

  • Copia el documento existente en la nueva carpeta de proyectos.

  • Quita las propiedades _AssemblyName0 y _AssemblyLocation0 de documento personalizado para evitar que se ejecuten las extensiones de código administrado existentes (estas propiedades se agregan de nuevo al generar el proyecto).

  • Agrega el archivo de código principal original, pero incorpora comentarios explicativos de lo que ha sucedido y cambia el nombre del archivo de <NombreDocumento> a <NombreDocumento>(antiguo).

  • Agrega todos los archivos del proyecto original al proyecto nuevo.

  • Agrega todas las referencias existentes al proyecto nuevo.

No se migra ninguna parte del código existente a las nuevas clases. En lugar de ello, se llama al método _Startup de la clase principal antigua desde el método Startup de la nueva clase principal. Esto crea instancias de la clase antigua, para que la solución se ejecute igual que en la versión anterior.

El nombre predeterminado de la clase en <NombreDocumento>(antiguo) es OfficeCodeBehind. En un proyecto de Word actualizado, el nombre predeterminado de la clase principal es ThisDocument. En un proyecto de Excel actualizado, el nombre predeterminado de las clases principales es ThisWorkbook para la clase que incluye código que se ejecuta en el nivel del libro y Sheet1, Sheet2, etc. para el código que se ejecuta en el nivel de las hojas de cálculo.

Para finalizar la actualización, debe realizar las siguientes acciones:

  • Mueva manualmente el código de la clase antigua (que tenía el nombre predeterminado OfficeCodeBehind) a las nuevas clases de documento, libro y hoja; a continuación, elimine el archivo de código antiguo. Ahora bien, si simplemente desea conservar el código existente tal cual, puede conservar el archivo de código antiguo y ejecutarlo llamándolo desde las nuevas clases. Todo el código nuevo que agreguen las herramientas se colocará en las clases nuevas.

  • Actualice el código como se describe a continuación.

  • Reemplace todos los controles ActiveX por controles administrados.

Opcionalmente, también puede realizar las acciones siguientes:

  • Refactorice el código de C#.

Traslado del código de la clase principal antigua a la clase nueva

Se recomienda mover el código de la clase antigua a las clases nuevas para poder aprovechar las herramientas de Visual Studio. Las herramientas utilizan automáticamente las clases nuevas al generar el código. Por ejemplo, si agrega un botón al documento y hace doble clic en él para obtener el código, el controlador de eventos predeterminado se agregará a la clase nueva.

Si está actualizando una solución de Excel, asegúrese de determinar cuidadosamente qué clase deberá contener cada uno de los métodos trasladados. Si el método pertenece al libro y/o a todas las hojas en general, debe colocar el código en la clase ThisWorkbook. Si el código pertenece a una sola hoja (por ejemplo, si corresponde a un control contenido en ella), deberá colocarlo en la clase de la hoja de que se trate.

Para ayudarle a comenzar, el código generado en la clase nueva ThisDocument o ThisWorkbook contiene métodos de marcador de posición con comentarios. Puede utilizarlos de una de las dos maneras siguientes:

  • Quite todo el código de la clase antigua y colóquelo en las clases nuevas proporcionadas en la solución actualizada.

  • Escriba código en los métodos nuevos para llamar a los métodos antiguos de la clase antigua. Para que esto funcione, debe modificar los métodos de la clase antigua de modo que dejen de ser privados.

Ejemplos

Los siguientes son ejemplos de métodos de marcador de posición que crean instancias de la clase antigua y llaman a los métodos contenidos en ella:

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)
//}

Una vez que se ha movido todo el código a las nuevas clases, quite la clase antigua.

Actualización del código

Quizás tenga que realizar algunos cambios en el código si el código existente hace referencia a Application, llama a determinados eventos o métodos, o bien, depende del evento Open.

Calificar la aplicación

En Visual Studio Tools para Office, versión 2003, el uso incompleto de Application hacía referencia al tipo System.Windows.Forms.Application. En Visual Studio Tools para Office, hace referencia al objeto Application de Word o Excel. Esto significa que es preciso actualizar todas las referencias incompletas a Application con el espacio de nombres System.Windows.Forms.Application completo si desea obtener los mismos resultados. Por ejemplo, si utiliza código del tipo Application.Run(New Form1) para abrir un formulario, debe volver a escribirlo de la siguiente manera: System.Windows.Forms.Application.Run(New Form1).

Cambiar el nombre de eventos y métodos

Word y Excel exponen algunos eventos que tienen los mismos nombres que métodos del modelo de objetos. Por ejemplo, los documentos de Word tienen un evento Close y un método Close. El código de la solución de Visual Studio Tools para Office requiere un nombre diferente para uno de los miembros; debe reemplazar las referencias existentes a los miembros siguientes por los nuevos nombres.

Word.Document

Excel.Worksheet

Excel.Workbook

Excel.Chart

Controlar el evento Open

Los proyectos actualizados no provocan el evento Open para los libros de Excel o el evento Open para los documentos de Word. Si el código depende del evento Open, deberá moverlo al controlador de eventos ThisWorkbook_Open() en la nueva clase ThisWorkbook para los libros de Excel, o bien, al controlador de eventos ThisDocument_Open() en la nueva clase ThisDocument para los documentos de Word. Asimismo, podrá llamar al controlador de eventos Open desde el método _Startup de la clase OfficeCodeBehind original.

Reemplazo de controles ActiveX por controles administrados

Si ha utilizado controles ActiveX en el documento o libro, debe eliminarlos y reemplazarlos por controles administrados del Cuadro de herramientas de Visual Studio. Los controles ActiveX tienen limitaciones en los nuevos proyectos de Visual Studio Tools para Office; por ejemplo, no puede enlazar datos a controles ActiveX y debe utilizar un ensamblado de interoperabilidad especial con el fin de crear código para ellos. Por esta razón, los controles ActiveX no se admiten en los nuevos proyectos de Visual Studio Tools para Office.

Refactorización del código (sólo C#)

Visual Studio proporciona las herramientas necesarias para ayudarle a organizar y ordenar el código de C#. Este proceso se denomina refactorizar. Cuando el archivo de código se abre en el editor de código, se agrega a Visual Studio el menú Refactorizar, que contiene estas herramientas. Para obtener más información, vea Refactorización.

Vea también

Tareas

Cómo: Actualizar soluciones de Visual Studio Tools para Office

Conceptos

Información general sobre los ensamblados en las soluciones de Office

Actualizar y migrar soluciones de Office