Share via


Procédure pas à pas : création d'un projet Office à l'aide de l'automation de projet Visual Studio

Mise à jour : novembre 2007

S'applique à

Les informations de cette rubrique s'appliquent uniquement aux projets Visual Studio Tools pour Office et versions de Microsoft Office spécifiés.

Type de projet

  • Projets au niveau du document

Version de Microsoft Office

  • Excel 2003

Pour plus d'informations, consultez Fonctionnalités disponibles par type d'application et de projet.

Cette procédure pas à pas montre comment créer une macro qui utilise le modèle objet Visual Studio pour automatiser la création d'un projet Visual Studio Tools pour Office. Le projet utilise des paramètres personnalisés dans l'Assistant Projet Visual Studio Tools pour Office, plutôt que les valeurs par défaut du projet.

Ce code crée un projet avec les paramètres personnalisés de l'Assistant pour que le projet automatisé soit créé à l'aide d'un classeur Microsoft Office Excel existant, au lieu de créer un nouveau classeur.

Pour plus d'informations sur les macros, consultez Automatisation des actions répétitives à l'aide de macros.

Cette procédure pas à pas illustre les tâches suivantes :

  • Création d'une macro Visual Studio.

  • Création d'un fichier modèle temporaire (.vstemplate) avec les paramètres personnalisés.

  • Définition des paramètres pour un Assistant et lancement de l'Assistant.

Composants requis

Les composants suivants sont nécessaires pour exécuter cette procédure pas à pas :

  • Visual Studio

  • Visual Studio Tools pour Office (composant facultatif de Visual Studio 2008 Professional et Visual Studio Team System)

  • Microsoft Office Excel 2003

Création du classeur Excel

Vous devez créer un classeur Excel qui est utilisé comme classeur existant dans le nouveau projet.

Pour créer le classeur Excel

  1. Créez un dossier sur le lecteur C de l'ordinateur appelé CreateNewFile.

  2. Créez un sous-dossier dans CreateNewFile appelé Test: C:\CreateNewFile\Test.

  3. Ouvrez Microsoft Office Excel 2003.

  4. Tapez Classeur CreateNewFile dans la cellule A1.

  5. Enregistrez le classeur sous CreateNewFile.xls à l'emplacement C:\CreateNewFile.

  6. Fermez Excel.

Le sous-dossier Test est utilisé comme emplacement pour le projet terminé.

Création d'une macro

Dans cette étape, vous créerez une macro Visual Studio vide.

Pour créer une macro

  1. Ouvrez Visual Studio et fermez tous les projets ouverts.

  2. Dans le menu Outils, pointez sur Macros, puis cliquez sur Éditeur de macros.

    L'environnement de développement intégré (IDE, Integrated Development Environment) Microsoft Visual Studio Macros s'ouvre.

  3. Développez le nœud MyMacros, s'il ne l'est pas déjà.

  4. Dans le menu Projet, cliquez sur Ajouter un module.

  5. Affectez le nom CreateNewProject au module, puis cliquez sur Ajouter.

Le nouveau module s'ouvre dans l'Éditeur de macros. Maintenant, vous pouvez ajouter du code pour créer un projet.

Création d'un fichier modèle (.vstemplate)

Pour créer un projet à l'aide des paramètres par défaut de l'Assistant, utilisez l'un des fichiers modèles prédéfinis. Dans Visual Studio Tools pour Office, l'opération par défaut consiste à créer un nouveau document ou classeur à utiliser dans le projet. Pour utiliser un classeur existant dans votre projet, vous devez générer un fichier temporaire personnalisé .vstemplate avec les paramètres appropriés.

Pour plus d'informations sur les fichiers .vstemplate, consultez Modèles Visual Studio.

Pour utiliser un document existant, ajoutez le paramètre VSTOExistingDocumentPath personnalisé au fichier .vstemplate.

Pour générer un fichier .vsz temporaire

  1. Dans le menu Projet, cliquez sur Ajouter une référence.

  2. Sélectionnez System.Xml.dll, cliquez sur Ajouter, puis sur OK.

  3. Ajoutez les instructions Imports suivantes en haut du fichier de code.

    Imports System.Xml
    Imports System.IO
    
  4. Dans le module CreateNewProject, ajoutez la méthode suivante pour définir le contenu du dossier modèle temporaire.

    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
    

La méthode suivante définit des paramètres et appelle la méthode LaunchWizard.

Démarrage de l'Assistant

Pour créer un projet, utilisez la méthode LaunchWizard de l'objet DTE.

Pour lancer l'Assistant

  • Ajoutez la méthode suivante au module CreateNewProject pour remplir le tableau de paramètres et lancer l'Assistant :

    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
    

Enfin, ajoutez une méthode pour appeler les deux méthodes que vous venez de créer et passer les paramètres appropriés.

Création du projet

La méthode suivante définit et passe les paramètres appropriés pour les méthodes CreateVstemplateFile et LaunchWizard.

Pour créer le projet

  1. Ajoutez la méthode suivante au module 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
    
  2. Enregistrez la macro.

  3. Fermez l'Éditeur de macros.

Test de la macro

Maintenant, vous pouvez tester votre macro pour vérifier qu'elle crée un projet.

Pour tester la macro

  1. Dans le menu Outils, pointez sur Macros, puis cliquez sur Explorateur de macros.

  2. Dans l'Explorateur de macros, sous MyMacros, développez la macro CreateNewProject.

  3. Sous CreateNewProject, double-cliquez sur CreateProject.

    L'Assistant Projet Visual Studio Tools pour Office s'ouvre.

  4. Dans la page Sélectionnez un document pour votre application, cliquez sur OK.

  5. Vérifiez que le nouveau projet est créé dans le sous-dossier Test.

Voir aussi

Tâches

Comment : ajouter des feuilles de calcul aux classeurs à l'aide de l'automation de projet Visual Studio

Comment : modifier les propriétés d'Excel à l'aide de l'automation de projet Visual Studio

Concepts

Vue d'ensemble de l'extensibilité de projet Visual Studio Tools pour Office

Exemples d'extensibilité de projet Visual Basic et Visual C#

Autres ressources

Extensibilité de projet dans Visual Studio Tools pour Office