共用方式為


逐步解說:使用 Visual Studio 專案 Automation 建立新的 Office 專案

更新:2007 年 11 月

適用於

本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。

專案類型

  • 文件層級專案

Microsoft Office 版本

  • Excel 2003

如需詳細資訊,請參閱依應用程式和專案類型提供的功能

這個逐步說明示範如何建立使用 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 活頁簿

  1. 在電腦的 C 磁碟機上建立一個名稱為 [CreateNewFile] 的資料夾。

  2. 在 [CreateNewFile] 建立子資料夾,名為 Test: C:\CreateNewFile\Test。

  3. 開啟 Microsoft Office Excel 2003。

  4. 在 [A1] 儲存格中輸入 This is the CreateNewFile workbook。

  5. 將活頁簿以 CreateNewFile.xls 的名稱儲存到 [C:\CreateNewFile]。

  6. 關閉 Excel。

Test 子資料夾將做為已完成專案的儲存位置。

建立新巨集

在此步驟中,您將建立新的空 Visual Studio 巨集。

若要建立新的巨集

  1. 開啟 Visual Studio 並關閉任何開啟的專案。

  2. 在 [工具] 功能表中,指到 [巨集],接著按一下 [巨集 IDE]。

    開啟 [Microsoft Visual Studio 巨集] 整合式開發環境 (IDE)。

  3. 如果 [MyMacros] 節點尚未展開,則將它展開。

  4. 在 [專案] 功能表上按一下 [加入模組]。

  5. 將這個模組命名為 CreateNewProject,然後按一下 [加入]。

新的模組會在 [巨集 IDE] 中開啟。現在您可以加入程式碼以建立新專案。

建立範本檔 (.vstemplate)

若要使用預設精靈設定建立新專案,請使用其中一個預先定義的範本檔。在 Visual Studio Tools for Office 中,專案預設為在專案中建立新的文件或活頁簿以供使用。若要在專案中使用現有的活頁簿,您必須產生具有正確設定的自訂暫存 .vstemplate 檔案。

如需 .vstemplate 檔案的詳細資訊,請參閱 Visual Studio 範本

若要使用現有的文件,請將自訂參數 VSTOExistingDocumentPath 加入至 .vstemplate 檔案。

若要產生暫存 .vsz 檔案

  1. 在 [專案] 功能表上,按一下 [加入參考]。

  2. 選取 [System.Xml.dll]、按一下 [加入],然後按一下 [確定]。

  3. 在程式碼檔的頂端加入下列 Imports 陳述式。

    Imports System.Xml
    Imports System.IO
    
  4. 在 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 方法。

若要建立專案

  1. 加入下列方法至 [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. 儲存巨集。

  3. 關閉巨集 IDE。

測試巨集

現在您可以測試巨集,以確定它會建立新專案。

若要測試巨集

  1. 從 [工具] 功能表中,指到 [巨集],接著按一下 [巨集總管]。

  2. 在 [巨集總管] 中,展開 [MyMacros] 下方的 [CreateNewProject] 巨集。

  3. 在 [CreateNewProject] 下方,按兩下 [CreateProject]。

    [Visual Studio Tools for Office 專案精靈] 便會開啟。

  4. 在 [為您的應用程式選取文件] 頁面中按一下 [確定]。

  5. 驗證新的專案已在 Test 子資料夾中建立。

請參閱

工作

HOW TO:使用 Visual Studio 專案 Automation 將工作表加入至工作簿

HOW TO:使用 Visual Studio 專案 Automation 變更 Excel 屬性

概念

Visual Studio Tools for Office 專案擴充性概觀

Visual Basic 和 Visual C# 的專案擴充性範例

其他資源

Office 中 Visual Studio 工具的專案擴充性