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


Пошаговое руководство. Вызов кода из 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 Document или Word 2013 Document .

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

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

    Откроется мастер создания проектов 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 см. в следующих разделах: