逐步解說:使用 Visual Studio 專案 Automation 建立新的 Office 專案
更新:2007 年 11 月
適用於 |
---|
本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。 專案類型
Microsoft Office 版本
如需詳細資訊,請參閱依應用程式和專案類型提供的功能。 |
這個逐步說明示範如何建立使用 Visual Studio 物件模型來自動化 Visual Studio Tools for Office 專案所建立的巨集。專案使用在 Visual Studio Tools for Office 專案精靈中的自訂設定,而不使用專案預設值。
這個程式碼會使用自訂的精靈設定建立新的專案,如此自動化專案便是使用現有的 Microsoft Office Excel 活頁簿建立,而不是建立新的活頁簿。
如需巨集的詳細資訊,請參閱使用巨集自動執行重複的動作。
此逐步解說會說明以下工作:
建立新的 Visual Studio 巨集。
建立具有自訂設定的暫存範本檔 (.vstemplate)。
設定精靈的參數並啟動精靈。
必要條件
您需要下列元件才能完成此逐步解說:
Visual Studio。
Visual Studio Tools for Office (Visual Studio 2008 Professional 和 Visual Studio Team System 的選擇性元件)。
Microsoft Office Excel 2003
建立 Excel 活頁簿
您必須在新專案中建立做為現有活頁簿的 Excel 活頁簿。
若要建立 Excel 活頁簿
在電腦的 C 磁碟機上建立一個名稱為 [CreateNewFile] 的資料夾。
在 [CreateNewFile] 建立子資料夾,名為 Test: C:\CreateNewFile\Test。
開啟 Microsoft Office Excel 2003。
在 [A1] 儲存格中輸入 This is the CreateNewFile workbook。
將活頁簿以 CreateNewFile.xls 的名稱儲存到 [C:\CreateNewFile]。
關閉 Excel。
Test 子資料夾將做為已完成專案的儲存位置。
建立新巨集
在此步驟中,您將建立新的空 Visual Studio 巨集。
若要建立新的巨集
開啟 Visual Studio 並關閉任何開啟的專案。
在 [工具] 功能表中,指到 [巨集],接著按一下 [巨集 IDE]。
開啟 [Microsoft Visual Studio 巨集] 整合式開發環境 (IDE)。
如果 [MyMacros] 節點尚未展開,則將它展開。
在 [專案] 功能表上按一下 [加入模組]。
將這個模組命名為 CreateNewProject,然後按一下 [加入]。
新的模組會在 [巨集 IDE] 中開啟。現在您可以加入程式碼以建立新專案。
建立範本檔 (.vstemplate)
若要使用預設精靈設定建立新專案,請使用其中一個預先定義的範本檔。在 Visual Studio Tools for Office 中,專案預設為在專案中建立新的文件或活頁簿以供使用。若要在專案中使用現有的活頁簿,您必須產生具有正確設定的自訂暫存 .vstemplate 檔案。
如需 .vstemplate 檔案的詳細資訊,請參閱 Visual Studio 範本。
若要使用現有的文件,請將自訂參數 VSTOExistingDocumentPath 加入至 .vstemplate 檔案。
若要產生暫存 .vsz 檔案
在 [專案] 功能表上,按一下 [加入參考]。
選取 [System.Xml.dll]、按一下 [加入],然後按一下 [確定]。
在程式碼檔的頂端加入下列 Imports 陳述式。
Imports System.Xml Imports System.IO
在 CreateNewProject 模組中,加入下列方法以定義暫存範本資料夾的內容。
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
下一個方法會定義參數並呼叫 LaunchWizard 方法。
啟動精靈
若要建立新專案,請使用 DTE 物件的 LaunchWizard 方法。
若要執行精靈
將下列方法加入至 [CreateNewProject] 模組以填入參數陣列並啟動精靈︰
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
最後,加入方法以呼叫先前剛建立並傳入適當參數的這兩個方法。
建立專案
下列方法定義並傳遞正確參數給 CreateVstemplateFile 和 LaunchWizard 方法。
若要建立專案
加入下列方法至 [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
儲存巨集。
關閉巨集 IDE。
測試巨集
現在您可以測試巨集,以確定它會建立新專案。
若要測試巨集
從 [工具] 功能表中,指到 [巨集],接著按一下 [巨集總管]。
在 [巨集總管] 中,展開 [MyMacros] 下方的 [CreateNewProject] 巨集。
在 [CreateNewProject] 下方,按兩下 [CreateProject]。
[Visual Studio Tools for Office 專案精靈] 便會開啟。
在 [為您的應用程式選取文件] 頁面中按一下 [確定]。
驗證新的專案已在 Test 子資料夾中建立。
請參閱
工作
HOW TO:使用 Visual Studio 專案 Automation 將工作表加入至工作簿
HOW TO:使用 Visual Studio 專案 Automation 變更 Excel 屬性
概念
Visual Studio Tools for Office 專案擴充性概觀
Visual Basic 和 Visual C# 的專案擴充性範例