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


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

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

Область применения. Сведения в этом разделе относятся к проектам уровня документа для Excel и Word. Дополнительные сведения см. в разделе "Функции", доступные по Приложение Office ликации и типу проекта.

Хотя в этом пошаговом руководстве используется Word, рассмотренная процедура также применима к проектам на уровне документа для Excel.

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

  • создание документа, содержащего код VBA;

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

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

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

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

Примечание.

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

Необходимые компоненты

Для выполнения этого пошагового руководства требуются следующие компоненты:

Создание документа, содержащего код VBA

Первым шагом является создание документа с поддержкой макросов, который содержит простой макрос VBA. При создании проекта Visual Studio, основанном на этом документе, он должен содержать проект VBA. В противном случае 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. Выберите узел Надстройки Office .

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

  6. В поле Имя введите CallingCodeFromVBA.

  7. Щелкните OK.

    Откроется Мастер проектов набора средств Visual Studio для 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 нажмите кнопку ОК.

  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 значение True.

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

  1. В обозревателе решенийдважды щелкните файл ThisDocument.vb.

    Файл DocumentWithVBA откроется в конструкторе.

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

  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 без сохранения изменений.

Следующие шаги

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