Tutorial: Crear un nuevo proyecto de Office mediante la automatización de proyectos en Visual Studio
Actualización: noviembre 2007
Se aplica a |
---|
La información de este tema sólo se aplica a los proyectos de Visual Studio Tools para Office y versiones de Microsoft Office especificados. Tipo de proyecto
Versión de Microsoft Office
Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto. |
En este tutorial se muestra cómo crear una macro que utilice el modelo de objetos de Visual Studio para automatizar la creación de un proyecto de Visual Studio Tools para Office. En el proyecto se utiliza la configuración personalizada de Asistente para proyectos de Visual Studio Tools para Office, en lugar de los valores predeterminados del proyecto.
El código crea un nuevo proyecto con una configuración de asistente personalizada para que el proyecto automatizado se cree utilizando un libro de Microsoft Office Excel existente en lugar de crear un libro nuevo.
Para obtener más información sobre macros, vea Automatizar acciones repetitivas mediante macros.
En este tutorial se explican las siguientes tareas:
Crear una nueva macro de Visual Studio.
Crear un archivo de plantilla temporal (.vstemplate) con una configuración personalizada.
Establecer parámetros para un asistente e iniciar el asistente.
Requisitos previos
Necesita los componentes siguientes para completar este tutorial:
Visual Studio.
Visual Studio Tools para Office (componente opcional de Visual Studio 2008 Professional y Visual Studio Team System).
Microsoft Office Excel 2003.
Crear el libro de Excel
Debe crear un libro de Excel que se utilizará como libro existente en el nuevo proyecto.
Para crear el libro de Excel
Cree una carpeta con el nombre CreateNewFile en la unidad C del equipo.
Cree una subcarpeta en CreateNewFile con el nombre Test: C:\CreateNewFile\Test.
Abra Microsoft Office Excel 2003.
Escriba Éste es el libro CreateNewFile en celda A1.
Guarde el libro como CreateNewFile.xls en la ubicación C:\CreateNewFile.
Cierre Excel.
La subcarpeta Test se utiliza como ubicación para el proyecto finalizado.
Crear una macro nueva
En este paso creará una nueva macro de Visual Studio vacía.
Para crear una macro nueva
Abra Visual Studio y cierre todos los proyectos abiertos.
En el menú Herramientas, elija Macros y después haga clic en IDE de macros.
Se abre el entorno de desarrollo integrado (IDE) de Macros de Microsoft Visual Studio.
Expanda el nodo MyMacros si aún no está expandido.
En el menú Proyecto, haga clic en Agregar módulo.
Asigne el nombre CreateNewProject al módulo y, a continuación, haga clic en Agregar.
El nuevo módulo se abre en el IDE de macros. Ahora puede agregar código para crear un nuevo proyecto.
Crear un archivo de plantilla (.vstemplate)
Para crear un nuevo proyecto con la configuración predeterminada del asistente se utiliza uno de los archivos de plantilla predefinidos. En Visual Studio Tools para Office, la configuración predeterminada del proyecto consiste en crear un documento o un libro nuevo para usarlo en el proyecto. Para utilizar en el proyecto un libro existente, debe generar un archivo .vstemplate temporal personalizado con la configuración correcta.
Para obtener más información sobre archivos .vstemplate, vea Plantillas de Visual Studio.
Para utilizar un documento existente, agregue el parámetro personalizado VSTOExistingDocumentPath al archivo .vstemplate.
Para generar un archivo .vsz temporal
Haga clic en la opción Agregar referencia del menú Proyecto.
Seleccione System.Xml.dll haga clic en Agregar y, a continuación, en Aceptar.
Agregue las instrucciones Imports siguientes al principio del archivo de código.
Imports System.Xml Imports System.IO
En el módulo CreateNewProject, agregue el método siguiente para definir el contenido de la carpeta de plantillas temporal.
Sub CreateVstemplateFile(ByVal defaultTemplateFilePath As String, _ ByVal templateFilePath As String, ByVal docFilePath As String) ' Copy the default template in the temporary location. Dim defaultTemplateDirectory = _ Path.GetDirectoryName(defaultTemplateFilePath) Dim templateDirectory = Path.GetDirectoryName(templateFilePath) If Not Directory.Exists(templateDirectory) Then Directory.CreateDirectory(templateDirectory) End If For Each fileToCopy As String In Directory. _ GetFiles(defaultTemplateDirectory) File.Copy(fileToCopy, Path.Combine(templateDirectory, _ Path.GetFileName(fileToCopy)), True) Next ' Create the vstemplate namespace. Dim vstemplateNamespace As String = _ "https://schemas.microsoft.com/developer/vstemplate/2005" ' Load the XML document. Dim doc As XmlDocument = New XmlDocument() doc.Load(templateFilePath) Dim xmlNsManager As XmlNamespaceManager = _ New XmlNamespaceManager(doc.NameTable) xmlNsManager.AddNamespace("vstemplns", vstemplateNamespace) ' Get 'CustomParameters' XML node. Dim customParametersNode As XmlNode = doc.SelectSingleNode( _ "/vstemplns:VSTemplate/vstemplns:TemplateContent/" _ & "vstemplns:CustomParameters", xmlNsManager) ' Create a new XML CustomParameter node with ' the existing document data. ' <CustomParameter Name="VSTOExistingDocumentPath" _ ' Value="C:\CreateNewFile\CreateNewFile.xls" /> Dim newNode As XmlNode newNode = doc.CreateElement("CustomParameter", _ vstemplateNamespace) Dim nameAttribute As XmlAttribute nameAttribute = doc.CreateAttribute("Name") Dim valueAttribute As XmlAttribute valueAttribute = doc.CreateAttribute("Value") nameAttribute.Value = "VSTOExistingDocumentPath" valueAttribute.Value = docFilePath newNode.Attributes.Append(nameAttribute) newNode.Attributes.Append(valueAttribute) customParametersNode.AppendChild(newNode) doc.Save(templateFilePath) End Sub
El método siguiente define los parámetros y llama al método LaunchWizard.
Iniciar el asistente
Para crear un proyecto nuevo, utilice el método LaunchWizard del objeto DTE.
Para iniciar el asistente
Agregue el método siguiente al módulo CreateNewProject para rellenar la matriz de parámetros e iniciar el asistente:
Sub LaunchWizard(ByVal projectName As String, _ ByVal projectFolder As String, _ ByVal templateFilePath As String) Dim params(6) As Object ' New project. params(0) = "{0F90E1D0-4999-11D1-B6D1-00A0C90F2744}" ' Project name. params(1) = projectName ' Project location. params(2) = projectFolder ' Install location. params(3) = "" ' Close solution. params(4) = False ' Solution name. params(5) = "" ' Silent - do not display any user interface. params(6) = False DTE.LaunchWizard(templateFilePath, params) End Sub
Por último, agregue un método para llamar a los dos métodos que ha creado y pasar los parámetros adecuados.
Crear el proyecto
Con el siguiente método se definen y pasan los parámetros correctos para los métodos CreateVstemplateFile y LaunchWizard.
Para crear el proyecto
Agregue el método siguiente al módulo CreateNewProject:
Sub CreateProject() Dim sol As Solution2 = DTE.Solution ' Get the path of the default .vstemplate file using ' the name of the template zip file and the language. ' The zip files are "VSTOExcelWorkbook.zip", ' "VSTOExcelTemplate.zip", ' "VSTOWordDocument.zip", ' or "VSTOWordTemplate.zip". ' The languages are "VisualBasic" and "CSharp". Dim defaultTemplateFilePath As String = _ sol.GetProjectTemplate("VSTOExcel2003Workbook.zip", _ "VisualBasic") ' Get the temporary .vstemplate file containing ' the specification. Dim templateDirectory As String = "C:\CreateNewFile\template" Dim templateFilePath = Path.Combine(templateDirectory, _ Path.GetFileName(defaultTemplateFilePath)) ' Get an existing document to use in project creation. Dim docFilePath As String = "C:\CreateNewFile\CreateNewFile.xls" ' Create a temporary template with the wizard specification. CreateVstemplateFile(defaultTemplateFilePath, _ templateFilePath, docFilePath) ' Launch the CreateProject wizard. Dim projectName As String = "CreateNewFile" Dim projectFolder As String = "c:\CreateNewFile\test" LaunchWizard(projectName, projectFolder, templateFilePath) End Sub
Guarde la macro.
Cierre el IDE de macros.
Probar la macro
Ahora puede probar la macro para asegurarse de que crea un proyecto nuevo.
Para probar la macro
En el menú Herramientas, elija Macros y después haga clic en el Explorador de macros.
En el Explorador de macros, bajo MyMacros, expanda la macro CreateNewProject.
Bajo CreateNewProject, haga doble clic en CreateProject.
Se abre el Asistente para proyectos de Visual Studio Tools para Office.
En la página Seleccione un documento para la aplicación, haga clic en Aceptar.
Compruebe que se crea el proyecto nuevo en la subcarpeta Test.
Vea también
Tareas
Cómo: Agregar hojas de cálculo a libros mediante la automatización de proyectos de Visual Studio
Cómo: Cambiar propiedades de Excel mediante la automatización de proyectos de Visual Studio
Conceptos
Información general sobre la extensibilidad de proyectos en Visual Studio Tools para Office
Ejemplos de extensibilidad de proyectos de Visual Basic y Visual C#
Otros recursos
Extensibilidad de proyectos en Visual Studio Tools para Office