Tutorial: Crear un nuevo proyecto de Office mediante la automatización de proyectos en Visual Studio
En este tutorial se muestra cómo crear una macro que use el modelo de objetos de Visual Studio para automatizar la creación de un proyecto de 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.
Se aplica a: la información de este tema se aplica a los proyectos de nivel de documento para Excel 2010. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.
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 muestran las tareas siguientes:
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:
-
Una edición de Visual Studio 2010 que incluye las herramientas para desarrolladores de Microsoft Office. Para obtener más información, vea [Configurar un equipo para desarrollar soluciones de Office](bb398242\(v=vs.100\).md).
- Excel 2010.
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 Excel 2010.
Escriba Éste es el libro CreateNewFile en la 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, 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("VSTOExcel2010WorkbookV4.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
Ejemplos de extensibilidad de proyectos de Visual Basic y Visual C#