Condividi tramite


Procedura dettagliata: creazione di un nuovo progetto Office utilizzando l'automazione del progetto di Visual Studio

Aggiornamento: novembre 2007

Si applica a

Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati.

Tipo di progetto

  • Progetti a livello di documento

Versione Microsoft Office

  • Excel 2003

Per ulteriori informazioni, vedere la classe Funzionalità disponibili in base ai tipi di progetto e applicazione.

In questa procedura dettagliata viene illustrato come creare una macro in cui viene utilizzato il modello a oggetti di Visual Studio per automatizzare la creazione di un progetto Visual Studio Tools per Office. Nel progetto vengono impiegate le impostazioni personalizzate della Creazione guidata progetto Visual Studio Tools per Office invece dei valori predefiniti del progetto.

Nel codice viene creato un nuovo progetto con impostazioni personalizzate per la procedura guidata, in modo che il progetto automatizzato venga creato utilizzando una cartella di lavoro di Microsoft Office Excel esistente anziché una nuova.

Per ulteriori informazioni sulle macro, vedere Automazione di operazioni ripetitive tramite macro.

In questa procedura dettagliata vengono illustrate le attività seguenti:

  • Creazione di una nuova macro di Visual Studio.

  • Creazione di un file di modello temporaneo (con estensione vstemplate) con impostazioni personalizzate.

  • Impostazione di parametri per una procedura guidata e avvio della procedura guidata.

Prerequisiti

Per completare questa procedura dettagliata, è necessario disporre dei seguenti componenti:

  • Visual Studio.

  • Visual Studio Tools per Office (componente facoltativo di Visual Studio 2008 Professional e Visual Studio Team System).

  • Microsoft Office Excel 2003.

Creazione della cartella di lavoro di Excel

È necessario creare una cartella di lavoro di Excel che verrà utilizzata come cartella di lavoro esistente nel nuovo progetto.

Per creare la cartella di lavoro di Excel

  1. Creare una cartella denominata CreateNewFile nell'unità C del computer.

  2. All'interno di CreateNewFile, creare una sottocartella denominata Test: C:\CreateNewFile\Test.

  3. Aprire Microsoft Office Excel 2003.

  4. Digitare This is the CreateNewFile workbook nella cella A1.

  5. Salvare la cartella di lavoro come CreateNewFile.xls nel percorso C:\CreateNewFile.

  6. Chiudere Excel.

La sottocartella Test verrà utilizzata per inserirvi il progetto completo.

Creazione di una nuova macro

In questo passaggio verrà creata una nuova macro di Visual Studio vuota.

Per creare una nuova macro

  1. Aprire Visual Studio e chiudere eventuali progetti aperti.

  2. Scegliere Macro dal menu Strumenti, quindi fare clic su IDE macro.

    Verrà visualizzato l'ambiente di sviluppo integrato (IDE) Microsoft Visual Studio Macro.

  3. Espandere il nodo MyMacros, se non è ancora espanso.

  4. Scegliere Aggiungi modulo dal menu Progetto.

  5. Assegnare il nome CreateNewProject al modulo, quindi scegliere Aggiungi.

Il nuovo modulo viene aperto nell'IDE macro. A questo punto è possibile aggiungere il codice per la creazione di un nuovo progetto.

Creazione di un file modello (VSTEMPLATE)

Per creare un nuovo progetto con le impostazioni predefinite della procedura guidata, utilizzare uno dei file modello predefiniti. Per impostazione predefinita, in Visual Studio Tools per Office viene creato un nuovo documento o una nuova cartella di lavoro da utilizzare nel progetto. Per utilizzare una cartella di lavoro già presente nel progetto è necessario generare un file VSTEMPLATE personalizzato temporaneo con le impostazioni corrette.

Per ulteriori informazioni sui file VSTEMPLATE, vedere Modelli di Visual Studio.

Per utilizzare un documento esistente, aggiungere il parametro personalizzato VSTOExistingDocumentPath al file VSTEMPLATE.

Per generare un file VSZ temporaneo

  1. Scegliere Aggiungi riferimento dal menu Progetto.

  2. Selezionare System.Xml.dll, fare clic su Aggiungi, quindi su OK.

  3. Aggiungere le seguenti istruzioni Imports all'inizio del file di codice:

    Imports System.Xml
    Imports System.IO
    
  4. Nel modulo CreateNewProject, aggiungere il metodo seguente per definire i contenuti della cartella dei modelli temporanea:

    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
    

Il metodo successivo consente di definire parametri e di chiamare il metodo LaunchWizard.

Avvio della procedura guidata

Per creare un nuovo progetto, utilizzare il metodo LaunchWizard dell'oggetto DTE.

Per avviare la procedura guidata

  • Aggiungere il metodo seguente al modulo CreateNewProject per riempire la matrice di parametri e avviare la procedura guidata:

    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
    

Aggiungere infine un metodo per chiamare i due metodi appena creati e passare i parametri appropriati.

Creazione del progetto

Il metodo riportato di seguito consente di definire e passare i parametri corretti per i metodi CreateVstemplateFile e LaunchWizard.

Per creare il progetto

  1. Aggiungere il seguente metodo al modulo 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. Salvare la macro.

  3. Chiudere l'IDE macro.

Test della macro

A questo punto, è possibile eseguire il test della macro per verificare che consenta la creazione di un nuovo progetto.

Per verificare la macro

  1. Scegliere Macro dal menu Strumenti, quindi fare clic su Esplora macro.

  2. In Esplora macro, espandere la macro CreateNewProject nel nodo MyMacros.

  3. Fare doppio clic su CreateProject in CreateNewProject.

    Verrà avviata la Creazione guidata progetto Visual Studio Tools per Office.

  4. Nella pagina Selezionare un documento per l'applicazione, fare clic su OK.

  5. Verificare che la nuova macro sia stata creata nella sottocartella Test.

Vedere anche

Attività

Procedura: aggiungere fogli di lavoro alle cartelle di lavoro utilizzando l'automazione di progetto di Visual Studio

Procedura: modificare le proprietà di Excel mediante l'automazione di progetto di Visual Studio

Concetti

Cenni preliminari sulla extensibility dei progetti in Visual Studio Tools per Office

Esempi di estensibilità di progetto in Visual Basic e Visual C#

Altre risorse

Extensibility di progetti in Visual Studio Tools per Office