Поделиться через


Пошаговое руководство. Создание нового проекта Office с помощью автоматизации проектов Visual Studio

Обновлен: Ноябрь 2007

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам 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 введите текст: Это рабочая книга CreateNewFile.

  5. Сохраните рабочую книгу в виде файла CreateNewFile.xls в папке C:\CreateNewFile.

  6. Закройте Excel.

Вложенная папка "Test" используется для размещения готового проекта.

Создание нового макроса

На данном этапе создается новый пустой макрос Visual Studio.

Создание нового макроса

  1. Откройте среду Visual Studio и закройте все открытые проекты.

  2. В меню Сервис выберите Макрос, затем щелкните Интегрированная среда разработки макросов.

    Откроется интегрированная среда разработки Макросы Microsoft Visual Studio.

  3. Разверните узел MyMacros, если он еще не развернут.

  4. В меню Проект выберите команду Добавить модуль.

  5. Присвойте новому модулю имя CreateNewProject и нажмите кнопку Добавить.

Новый модуль открывается в интегрированной среде разработки макросов. Теперь можно добавить код для создания нового проекта.

Создание файла шаблона (.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.

Запуск мастера

Для создания нового проекта используйте метод LaunchWizard объекта DTE.

Запуск мастера

  • Добавьте следующий метод в модуль 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. Закройте интегрированную среду разработки макросов.

Проверка макроса

Теперь можно проверить работу макроса, чтобы убедиться, что он создает новый проект.

Проверка макроса

  1. В меню Сервис выберите Макросы, а затем щелкните Обозреватель макросов.

  2. В узле MyMacrosОбозревателя макросов разверните макрос CreateNewProject.

  3. В макросе CreateNewProject дважды щелкните команду CreateProject.

    Откроется Мастер проектов набора инструментов Visual Studio для Office.

  4. В окне Выберите документ для приложения нажмите кнопку ОК.

  5. Убедитесь, что во вложенной папке "Test" был создан новый проект.

См. также

Задачи

Практическое руководство. Добавление рабочих книг с помощью автоматизации проектов Visual Studio

Практическое руководство. Изменение свойств Excel с помощью автоматизации проектов Visual Studio

Основные понятия

Общие сведения о расширяемости проектов Visual Studio Tools for Office

Примеры расширения среды для проектов Visual Basic и Visual C#

Другие ресурсы

Расширяемость проекта в инструментах Visual Studio для Office