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


Пошаговое руководство. Вызов кода из VBA в проекте Visual Basic

В данном руководстве описывается способ вызова метода настроек на уровне документа из кода VBA для документа Microsoft Office Word.Данная процедура состоит из трех основных этапов: добавления метода к классу ведущего элемента ThisDocument, преобразования метода в код VBA и вызова метода из кода VBA в документе.

Применение. Сведения этого раздела применяются к проектам уровня документа для следующих приложений: Excel 2013 и Excel 2010; Word 2013 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

Хотя руководство предназначено исключительно для Word, некоторые рассмотренные понятия также применяются в проектах уровня документа для Excel.

В данном пошаговом руководстве рассмотрены следующие задачи:

  • Создание документа с кодом VBA.

  • Определение размещения документа с помощью центра управления безопасности в Word.

  • Добавление метода к классу ведущего элемента ThisDocument.

  • Представление метода коду VBA.

  • Вызов метода из кода VBA.

ПримечаниеПримечание

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях.Эти элементы определяются используемым выпуском Visual Studio и его параметрами.Дополнительные сведения см. в разделе Параметры Visual Studio.

ссылка на видео Для просмотра связанных демонстрационных видеороликов перейдите по ссылке Инструкции по вызову кода VSTO из VBA (страница может быть на английском языке).

Обязательные компоненты

Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.

-

Выпуск Visual Studio 2012, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в разделе [Настройка компьютера для разработки решений Office](bb398242\(v=vs.110\).md).
  • Word 2013 или Word 2010.

Создание документа с кодом VBA

Первый этап предполагает создание документа с включенными макросами, в том числе с простым макросом VBA.В документ необходимо поместить проект VBA перед созданием проекта Visual Studio, основанном на этом документе.В противном случае Visual Studio не сможет изменить проект VBA, чтобы активировать код VBA с целью вызова сборки настройки.

Если документ с кодом VBA уже используется, этот этап можно пропустить.

Для того чтобы создать документ с кодом VBA, выполните следующее.

  1. Запустите Word.

  2. Сохраните действующий документ Word в виде Документа с включенными макросами в формате (*.docm) с названием DocumentWithVBA.Выберите удобное место для сохранения, например рабочий стол.

  3. В ленте щелкните вкладку Разработчик.

    ПримечаниеПримечание

    Если вкладка Разработчик не отображается в ленте, то ее следует сначала отобразить.Дополнительные сведения см. в разделе Практическое руководство. Отображение вкладки разработчика на ленте.

  4. В группе Код выберите пункт Visual Basic.

    Отобразится редактор Visual Basic.

  5. В окне Проект дважды нажмите пункт ThisDocument.

    Откроется файл кода для объекта ThisDocument.

  6. Добавьте следующий код VBA в файл кода.Код содержит простые функции, не выполняющие никаких действий.Единственная задача функции — удостовериться в наличии проекта VBA в документе.Это необходимо для выполнения следующих этапов пошагового руководства.

    Sub EmptySub()
    End Sub
    
  7. Сохраните документ и закройте Word.

Создание проекта

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

Создание нового проекта

  1. Запустите Visual Studio.

  2. В меню Файл последовательно выберите пункты Создать и Проект.Если интерфейс IDE настроен для использования параметров разработки Visual Basic, в меню Файл выберите пункт Новый проект.

  3. В области шаблонов разверните узел Visual Basic, а затем разверните Office/SharePoint.

  4. Выберите узел Добавить- ins office.

  5. В списке шаблонов проектов выберите проект Документ Word 2010 или документ слова 2013.

  6. В диалоговом окне Имя введите CallingCodeFromVBA.

  7. Нажмите кнопку ОК.

    Откроется вкладка Мастер проектов Visual Studio Tools for Office.

  8. Выберите Копировать текущий документ. В окне Полный путь к текущему документу укажите расположение с названием DocumentWithVBA.Если используется созданный документ с макросами, укажите путь к документу.

  9. Нажмите кнопку Готово.

    Visual Studio откроет документ DocumentWithVBA в конструкторе и добавит проект CallingCodeFromVBA в раздел Обозреватель решений.

Определение расположения документа

Перед преобразованием кода в код VBA в решении выполните запуск VBA в документе.Это можно сделать следующими способами.В данном руководстве расположение документа Word определяется в разделе Центр управления безопасностью.

Для того чтобы определить расположение документа

  1. Запустите Word.

  2. Выберите вкладку Файл.

  3. Нажмите кнопку Параметры Word.

  4. В области категорий нажмите Центр управления безопасностью.

  5. В панели "Детали" нажмите Параметры центра управления безопасностью.

  6. В панели "Категории" нажмите Надежные расположения.

  7. В панели "Детали" нажмите Добавить новые расположения.

  8. В диалоговом окне Надежные расположения Microsoft Office откройте папку с проектом CallingCodeFromVBA.

  9. Выберите Вложенные папки с надежными расположениями.

  10. В диалоговом окне Надежные расположения Microsoft Office нажмите кнопку OK.

  11. В диалоговом окне Центр управления безопасностью нажмите кнопку ОК.

  12. В диалоговом окне Параметры Word нажмите кнопку ОК.

  13. Закройте приложение Word.

Добавление метода к классу ThisDocument.

Теперь, когда проект VBA установлен, добавьте метод ThisDocument к классу ведущего элемента, который был получен из кода VBA.

Для того чтобы добавить метод к классу ThisDocument

  1. В Обозревателе решений откройте правой кнопкой файл ThisDocument.vb, а затем нажмите Просмотреть код.

    В редакторе кода откроется файл ThisDocument.vb.

  2. Добавьте следующий метод в класс ThisDocument.Этот метод позволяет создавать таблицу с двумя строками и столбцами в начале документа.Параметры позволяют указать текст, который отображается в первой строке.Позже в данном руководстве мы рассмотрим метод вызова из кода VBA в документе.

    Public Sub CreateTable(ByVal firstColumnHeader As String, _
        ByVal secondColumnHeader As String)
    
        Me.Paragraphs(1).Range.InsertParagraphBefore()
        Dim table1 As Word.Table = Me.Tables.Add(Me.Paragraphs(1).Range, 2, 2)
    
        With table1
            .Style = "Table Professional"
            .Cell(1, 1).Range.Text = firstColumnHeader
            .Cell(1, 2).Range.Text = secondColumnHeader
        End With
    End Sub
    
  3. Выполните построение проекта.

Преобразование метода в код VBA

Для того чтобы преобразовывать метод CreateTable в код VBA в документе, установите в свойстве EnableVbaCallers для ведущего элемента в функции ThisDocument значение Верно.

Чтобы преобразовывать метод в код VBA, выполните следующие действия.

  1. Дважды нажмите ThisDocument.vb в Обозревателе решений.

    В конструкторе откроется файл DocumentWithVBA.

  2. В окне Свойства выберите свойство EnableVbaCallers и измените его значение на Верно.

  3. В появившимся окне с сообщением нажмите кнопку ОК.

  4. Выполните построение проекта.

Вызов метода из кода VBA

Теперь можно вызвать метод CreateTable из кода VBA в документе.

ПримечаниеПримечание

В данном руководстве мы рассмотрим добавление кода VBA в документ во время откладки проекта.Любой добавляемый в этот документ код VBA перезаписывается во время следующего построения проекта, поскольку Visual Studio заменяет документ в выходной папке построения копией документа из главной папки проекта.Для того чтобы сохранить код VBA, скопируйте документ в папку проекта.Дополнительные сведения см. в разделе Объединение настроек VBA и настроек на уровне документа.

Для вызова метода из кода VBA выполните следующее.

  1. Нажмите клавишу F5 для запуска проекта.

  2. На вкладке Разработчик в группе Код нажмите кнопку Visual Basic.

    Отобразится редактор Visual Basic.

  3. В меню Вставка выберите пункт Модуль.

  4. Добавьте в новый модуль следующий код.

    Этот код вызывает метод CreateTable в сборке настройки.Макрос имеет доступ к этому методу с помощью свойства CallVSTOAssembly объекта ThisDocument.Свойство автоматически создается во время установки EnableVbaCallers, рассмотренной ранее в нашем руководстве.

    Sub CreateTable()
        Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date")
    End Sub
    
  5. Нажмите клавишу F5.

  6. Удостоверьтесь в том, чтобы новые таблицы были добавлены в документ.

  7. Закройте Word без сохранения изменений.

Следующие действия

Дополнительные сведения о вызове кода из VBA в решениях Office см. в следующих разделах.

См. также

Задачи

Практическое руководство. Предоставление доступа к коду со стороны VBA в проекте Visual Basic

Практическое руководство. Предоставление доступа к коду со стороны VBA в проекте Visual C#

Пошаговое руководство. Вызов кода из VBA в проекте Visual C#

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

Объединение настроек VBA и настроек на уровне документа

Настройки программирования уровня документа