Пошаговое руководство. Вызов кода из 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.
Необходимые компоненты
Для выполнения этого пошагового руководства требуются следующие компоненты:
Выпуск Visual Studio, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в статье "Настройка компьютера для разработки решений Office".
Microsoft Word
Создание документа, содержащего код VBA
Первым шагом является создание документа с поддержкой макросов, который содержит простой макрос VBA. При создании проекта Visual Studio, основанном на этом документе, он должен содержать проект VBA. В противном случае Visual Studio не сможет изменить проект VBA так, чтобы код VBA мог вызывать сборку настройки.
Если у вас уже есть документ, содержащий код VBA, который необходимо использовать, данный шаг можно пропустить.
Создание документа, содержащего код VBA
Запустите приложение Word.
Сохраните активный документ в виде документа с поддержкой макросов Word (*.docm) с именем DocumentWithVBA. Сохраните ее в удобном месте, например на рабочем столе.
На ленте перейдите на вкладку Разработчик .
Примечание.
Если вкладка Разработчик не отображается, сделайте ее видимой. Дополнительные сведения см. в разделе "Практическое руководство. Отображение вкладки разработчика на ленте".
В группе Код щелкните Visual Basic.
Открывается редактор Visual Basic.
В окне Проект дважды щелкните ThisDocument.
Открывается файл кода для объекта
ThisDocument
.Добавьте следующий код VBA в файл кода. Этот код определяет простую функцию, которая не выполняет никаких действий. Данная функция предназначена исключительно для проверки наличия проекта VBA в документе. Это необходимо для выполнения последующих действий в данном пошаговом руководстве.
Sub EmptySub() End Sub
Сохраните документ и выйдите из Word.
Создание проекта
Теперь можно создать проект на уровне документа для Word, который использует созданный ранее документ с поддержкой макросов.
Создание проекта
Запустите среду Visual Studio.
В меню Файл укажите Создать, затем нажмите Проект. Если интерфейс IDE настроен на использование параметров разработки Visual Basic, последовательно выберите в меню Файл пункт Создать проект.
В области шаблонов разверните узел Visual Basic, а затем узел Office/SharePoint.
Выберите узел Надстройки Office .
В списке шаблонов проектов выберите проект Документ Word 2010 или Документ Word 2013 .
В поле Имя введите CallingCodeFromVBA.
Щелкните OK.
Откроется Мастер проектов набора средств Visual Studio для Office .
Выберите Скопировать существующий документи в поле Полный путь к существующему документу укажите расположение документа DocumentWithVBA , созданного ранее. Если вы используете собственный документ с поддержкой макросов, укажите его расположение.
Нажмите кнопку Готово.
Visual Studio открывает документ DocumentWithVBA в конструкторе и добавляет проект CallingCodeFromVBA в Обозреватель решений.
Доверие к расположению документа
Перед предоставлением кода в своем решении коду VBA в документе необходимо предоставить доверие VBA на выполнение в документе. Для этого существует несколько способов. В целях этого пошагового руководства предоставьте доверие расположению документа в Центре управления безопасностью в Word.
Предоставление доверия расположению документа
Запустите приложение Word.
Перейдите на вкладку Файл .
Нажмите кнопку Параметры Word .
В области категорий нажмите Центр управления безопасностью.
В области сведений нажмите Параметры центра управления безопасностью.
В области категорий нажмите Надежные расположения.
В области сведений нажмите Добавить новое расположение.
В диалоговом окне Надежное расположение Microsoft Office перейдите в папку, содержащую проект CallingCodeFromVBA .
Установите флажок Также доверять всем вложенным папкам.
В диалоговом окне Надежное расположение Microsoft Office нажмите кнопку ОК.
В диалоговом окне Центр управления безопасностью нажмите кнопку ОК.
В диалоговом окне Параметры Word нажмите кнопку ОК.
Закройте программу Word.
Добавление метода в класс ThisDocument
Теперь, когда проект VBA настроен, добавьте метод в класс ведущего элемента ThisDocument
, который можно вызвать из кода VBA.
Добавление метода в класс ThisDocument
В обозревателе решенийщелкните правой кнопкой мыши ThisDocument.vbи выберите пункт Просмотреть код.
В редакторе кода открывается файл ThisDocument.vb .
Добавьте приведенный ниже метод в класс
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
Выполните сборку проекта.
Предоставление метода коду VBA
Для предоставления метода CreateTable
коду VBA в документе установите для свойства EnableVbaCallers ведущего элемента ThisDocument
значение True.
Порядок представления метода коду VBA
В обозревателе решенийдважды щелкните файл ThisDocument.vb.
Файл DocumentWithVBA откроется в конструкторе.
В окне Свойства выберите свойство EnableVbaCallers и установите значение True.
Появляется сообщение, в котором следует нажать кнопку ОК .
Выполните сборку проекта.
Вызов метода из кода VBA
Теперь можно вызвать метод CreateTable
из кода VBA в документе.
Примечание.
В этом пошаговом руководстве будет добавлен код VBA в документ во время отладки проекта. Код VBA, добавляемый в этот документ, будет перезаписан в следующий раз при построении проекта, так как Visual Studio заменяет документ в выходной папке сборки копией документа из главной папки проекта. Если код VBA необходимо сохранить, его можно скопировать в документ в папке проекта. Дополнительные сведения см. в разделе "Объединение настроек VBA и уровня документа".
Вызов метода из кода VBA
Нажмите клавишу F5 для запуска проекта.
На вкладке Разработчик в группе Код щелкните элемент Visual Basic.
Открывается редактор Visual Basic.
В меню Вставить выберите пункт Модуль.
Добавьте в новый модуль следующий код:
Этот код вызывает метод
CreateTable
в сборке настройки. Макрос обращается к этому методу с помощью свойстваCallVSTOAssembly
объектаThisDocument
. Это свойство было автоматически создано ранее при установке значения для свойства EnableVbaCallers в этом пошаговом руководстве.Sub CreateTable() Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date") End Sub
Нажмите клавишу F5.
Убедитесь, что новая таблица была добавлена в документ.
Выйдите из Word без сохранения изменений.
Следующие шаги
Дополнительные сведения о вызове кода в решениях Office из VBA см. в следующих разделах:
Вызов кода в настройке Visual Basic из VBA. Этот процесс отличается от процесса Visual Basic. Дополнительные сведения см. в пошаговом руководстве. Код вызова из VBA в проекте Visual C#.
Вызов кода в надстройке VSTO из VBA. Дополнительные сведения см. в пошаговом руководстве. Код вызова в надстройке VSTO из VBA.