Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом пошаговом руководстве показано, как вызвать метод в настройке на уровне документа для 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".
Майкрософт Ворд
Создание документа, содержащего код 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 Document или Word 2013 Document .
В поле "Имя" введите CallingCodeFromVBA.
Нажмите кнопку ОК.
Откроется мастер создания проектов 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 C# из VBA. Этот процесс отличается от процесса Visual Basic. Дополнительные сведения см. в пошаговом руководстве: вызов кода из VBA в проекте Visual C#.
Вызов кода в надстройке VSTO из VBA. Для получения дополнительной информации см. Пошаговое руководство: вызов кода в надстройке VSTO из VBA.