Exemplarische Vorgehensweise: Erstellen eines neuen Office-Projekts mithilfe der Visual Studio-Projektautomatisierung
Aktualisiert: November 2007
Betrifft |
---|
Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office. Projekttyp
Microsoft Office-Version
Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp. |
Diese exemplarische Vorgehensweise veranschaulicht, wie ein Makro erstellt wird, das mithilfe des Visual Studio-Objektmodells die Erstellung eines Visual Studio Tools for Office-Projekts automatisiert. In diesem Projekt werden statt der Projektstandardwerte benutzerdefinierte Einstellungen im Projekt-Assistenten aus Visual Studio Tools for Office verwendet.
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:
Visual Studio
Visual Studio Tools for Office (eine optionale Komponente von Visual Studio 2008 Professional und Visual Studio Team System).
Microsoft Office Excel 2003.
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
Erstellen Sie auf Laufwerk C:\ des Computers einen Ordner mit dem Namen CreateNewFile.
Erstellen Sie in CreateNewFile einen Unterordner mit dem Namen Test: C:\CreateNewFile\Test.
Öffnen Sie Microsoft Office Excel 2003.
Geben in Zelle A1 Folgendes ein: Dies ist die CreateNewFile-Arbeitsmappe.
Speichern Sie die Arbeitsmappe als CreateNewFile.xls unter dem Pfad C:\CreateNewFile.
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
Öffnen Sie Visual Studio, und schließen Sie alle offene Projekte.
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.
Erweitern des MyMacros-Knoten, wenn er nicht bereits erweitert ist.
Klicken Sie im Menü Projekt auf Modul hinzufügen.
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 Tools for Office 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
Klicken Sie im Menü Projekt auf Verweis hinzufügen.
Wählen Sie System.Xml.dllaus, klicken Sie auf Hinzufügen und dann auf OK.
Fügen Sie am Anfang der Codedatei die folgenden Imports-Anweisungen ein:
Imports System.Xml Imports System.IO
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
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("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
Speichern Sie das Makro.
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
Zeigen Sie im Menü Extras auf Makros, und klicken Sie dann auf Makro-Explorer.
Erweitern Sie im Makro-Explorer unter MyMacros das Makro CreateNewProject.
Doppelklicken Sie unter CreateNewProject auf CreateProject.
Der Projekt-Assistent aus Visual Studio Tools for Office wird geöffnet.
Klicken Sie auf der Seite Dokument für die Anwendung auswählenauf OK.
Überprüfen Sie, ob das neue Projekt im Unterordner Test erstellt wird.
Siehe auch
Aufgaben
Gewusst wie: Ändern von Excel-Eigenschaften mithilfe der Visual Studio-Projektautomatisierung
Konzepte
Übersicht über Projekterweiterbarkeit in Visual Studio Tools for Office
Beispiele für die Visual Basic- und Visual C#-Projekterweiterbarkeit