Freigeben über


Exemplarische Vorgehensweise: Erstellen eines neuen Office-Projekts mithilfe der Visual Studio-Projektautomatisierung

Diese exemplarische Vorgehensweise veranschaulicht, wie ein Makro erstellt wird, das mithilfe des Visual Studio-Objektmodells die Erstellung eines Office-Projekts automatisiert. In diesem Projekt werden statt der Projektstandardwerte benutzerdefinierte Einstellungen im Projekt-Assistenten aus Visual Studio Tools for Office verwendet.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokumentebene für Excel 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

Mit diesem Code wird ein neues Projekt mit benutzerdefinierten Assistenteneinstellungen erstellt, sodass das automatisierte Projekt mit einer vorhandenen Microsoft Office Excel-Arbeitsmappe statt mit einer neuen erstellt wird.

Weitere Informationen über Makros finden Sie unter Automatisieren von wiederkehrenden Aktionen mit Makros.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Erstellen eines neuen Visual Studio-Makros.

  • Erstellen einer temporären Vorlagendatei (VSTEMPLATE) mit benutzerdefinierten Einstellungen.

  • Festlegen von Parametern für einen Assistenten und Starten des Assistenten.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

-

Eine Version von Visual Studio 2010, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](bb398242\(v=vs.100\).md).
  • Excel 2010.

Erstellen der Excel-Arbeitsmappe

Sie müssen eine Excel-Arbeitsmappe erstellen, die als Arbeitsmappe für das neue Projekt verwendet wird.

So erstellen Sie die Excel-Arbeitsmappe

  1. Erstellen Sie auf Laufwerk C:\ des Computers einen Ordner mit dem Namen CreateNewFile.

  2. Erstellen Sie in CreateNewFile einen Unterordner mit dem Namen Test: C:\CreateNewFile\Test.

  3. Öffnen Sie Excel 2010.

  4. Geben in Zelle A1 Folgendes ein: Dies ist die CreateNewFile-Arbeitsmappe.

  5. Speichern Sie die Arbeitsmappe als Datei "CreateNewFile.xls" unter dem Pfad C:\CreateNewFile.

  6. Schließen Sie Excel.

Der Unterordner Test wird als Speicherort für das vollständige Projekt verwendet.

Erstellen eines neuen Makros

In diesem Schritt erstellen Sie ein neues, leeres Visual Studio-Makro.

So erstellen Sie ein neues Makro

  1. Öffnen Sie Visual Studio, und schließen Sie alle offene Projekte.

  2. Zeigen Sie im Menü Extras auf Makros, und klicken Sie dann auf Makro-IDE.

    Die Microsoft Visual Studio Macros-IDE (integrierte Entwicklungsumgebung) wird geöffnet.

  3. Erweitern des MyMacros-Knoten, wenn er nicht bereits erweitert ist.

  4. Klicken Sie im Menü Projekt auf Modul hinzufügen.

  5. Nennen Sie das Modul "CreateNewProject", und klicken Sie dann auf Hinzufügen.

Das neue Modul wird in der Makro-IDE geöffnet. Jetzt können Sie Code hinzufügen, um ein neues Projekt zu erstellen.

Erstellen einer Vorlagendatei (VSTEMPLATE)

Zum Erstellen eines neuen Projekts mit den standardmäßigen Assistenteneinstellungen können Sie eine der vordefinierten Vorlagendateien verwenden. In Visual Studio wird standardmäßig ein neues Dokument oder eine neue Arbeitsmappe für das Projekt angelegt. Wenn Sie eine vorhandene Arbeitsmappe in Ihrem Projekt verwenden möchten, müssen Sie eine benutzerdefinierte temporäre VSTEMPLATE-Datei mit den korrekten Einstellungen generieren.

Weitere Informationen über VSTEMPLATE-Dateien finden Sie unter Visual Studio-Vorlagen.

Um ein vorhandenes Dokument zu verwenden, fügen Sie der VSTEMPLATE-Datei den benutzerdefinierten Parameter VSTOExistingDocumentPath hinzu.

So generieren Sie eine temporäre VSZ-Datei

  1. Klicken Sie im Menü Projekt auf Verweis hinzufügen.

  2. Wählen Sie System.Xml.dllaus, klicken Sie auf Hinzufügen und dann auf OK.

  3. Fügen Sie am Anfang der Codedatei die folgenden Imports-Anweisungen ein:

    Imports System.Xml
    Imports System.IO
    
  4. Fügen Sie im CreateNewProject-Modul die folgende Methode hinzu, um den Inhalt des temporären Vorlagenordners zu definieren:

    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
    

In der nächsten Methode werden die Parameter definiert und die LaunchWizard-Methode aufgerufen.

Starten des Assistenten

Zum Erstellen eines neuen Projekts verwenden Sie die LaunchWizard-Methode des DTE-Objekts.

So starten Sie den Assistenten

  • Fügen Sie dem Modul CreateNewProject die folgende Methode hinzu, um das Parameterarray zu füllen und den Assistenten zu starten:

    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
    

Fügen Sie schließlich eine Methode hinzu, die beide Methoden aufruft und die entsprechenden Parameter übergibt.

Erstellen des Projekts

Die folgende Methode definiert und übergibt die korrekten Parameter für die CreateVstemplateFile-Methode und die LaunchWizard-Methode.

So erstellen Sie das Projekt

  1. Fügen Sie dem CreateNewProject-Modul die folgende Methode hinzu:

    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
    
  2. Speichern Sie das Makro.

  3. Schließen Sie die Makro-IDE.

Testen des Makros

Jetzt können Sie das Makro testen, um sicherzustellen, dass es ein neues Projekt erstellt.

So testen Sie das Makro

  1. Zeigen Sie im Menü Extras auf Makros, und klicken Sie dann auf Makro-Explorer.

  2. Erweitern Sie im Makro-Explorer unter MyMacros das Makro CreateNewProject.

  3. Doppelklicken Sie unter CreateNewProject auf CreateProject.

    Der Projekt-Assistent aus Visual Studio Tools for Office wird geöffnet.

  4. Klicken Sie auf der Seite Dokument für die Anwendung auswählen auf OK.

  5. Überprüfen Sie, ob das neue Projekt im Unterordner Test erstellt wird.

Siehe auch

Aufgaben

Gewusst wie: Hinzufügen von Arbeitsblättern zu Arbeitsmappen mithilfe der Projektautomatisierung in Visual Studio

Gewusst wie: Ändern von Excel-Eigenschaften mithilfe der Visual Studio-Projektautomatisierung

Konzepte

Beispiele für die Visual Basic- und Visual C#-Projekterweiterbarkeit

Weitere Ressourcen

Erweiterbarkeit in Office-Projekten