Пошаговое руководство. Вызов кода надстройки VSTO из VBA
В этом пошаговом руководстве показано, как предоставить объект в надстройке VSTO другим решениям Microsoft Office, включая Visual Basic для приложений (VBA) и надстроек VSTO COM.
Область применения. Сведения в этом разделе относятся к проектам надстроек VSTO. Дополнительные сведения см. в разделе "Функции", доступные по Приложение Office ликации и типу проекта.
Хотя в этом пошаговом руководстве используется Excel, рассмотренная процедура применима к любому шаблону проекта надстройки VSTO, которые предоставляет Visual Studio.
В этом пошаговом руководстве рассматриваются следующие задачи:
Определение класса, который может быть предоставлен другим решениям Office.
Предоставление класса другим решениям Office.
Вызов метода класса из кода VBA.
Примечание.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Необходимые компоненты
Для выполнения этого пошагового руководства требуются следующие компоненты:
Выпуск Visual Studio, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в статье "Настройка компьютера для разработки решений Office".
Microsoft Excel
Создание проекта надстройки VSTO
Первым шагом является создание проекта надстройки VSTO для Excel.
Создание проекта
Создайте проект надстройки VSTO для Excel с именем ExcelImportDataс помощью шаблона проекта надстройки VSTO для Excel. Дополнительные сведения см. в разделе How to: Create Office Projects in Visual Studio.
Visual Studio открывает файл кода ThisAddIn.cs или ThisAddIn.vb и добавляет проект ExcelImportData в Обозреватель решений.
Определение класса, который можно предоставить другим решениям Office
В этом пошаговом руководстве описывается вызов метода ImportData
класса с именем AddInUtilities
в надстройке VSTO из кода VBA. Этот метод записывает строку в ячейку A1 активного листа.
Для предоставления класса AddInUtilities
другим решениям Office необходимо сделать класс общедоступным и видимым для COM. Необходимо также предоставить интерфейс IDispatch в классе. Код в следующей процедуре демонстрирует один из способов выполнения этих требований. Для получения дополнительной информации см. Calling Code in VSTO Add-ins from Other Office Solutions.
Определение класса, который можно предоставить другим решениям Office
В меню Проект выберите пункт Добавить класс.
В диалоговом окне Добавить новый элемент измените имя нового класса на AddInUtilitiesи нажмите кнопку Добавить.
В редакторе кода откроется файл AddInUtilities.cs или AddInUtilities.vb .
Добавьте следующие директивы в начало файла.
Замените класс
AddInUtilities
на следующий код.[ComVisible(true)] public interface IAddInUtilities { void ImportData(); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class AddInUtilities : IAddInUtilities { // This method tries to write a string to cell A1 in the active worksheet. public void ImportData() { Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet; if (activeWorksheet != null) { Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing); range1.Value2 = "This is my data"; } } }
Этот код делает класс
AddInUtilities
видимым для COM, а также добавляет методImportData
в класс. Для предоставления интерфейса IDispatch классAddInUtilities
также содержит атрибут ClassInterfaceAttribute , который реализует интерфейс, видимый для COM.
Предоставление класса другим решениям Office
Для предоставления класса AddInUtilities
другим решениям Office переопределите метод RequestComAddInAutomationService в классе ThisAddIn
. В переопределении верните экземпляр класса AddInUtilities
.
Предоставление класса AddInUtilities другим решениям Office
В обозревателе решенийразверните Excel.
Щелкните правой кнопкой мыши ThisAddIn.cs или ThisAddIn.vb, а затем выберите пункт Просмотреть код.
Добавьте в класс
ThisAddIn
приведенный далее код.В меню Сборка выберите Построить решение.
Убедитесь, что сборка решения выполняется без ошибок.
Тестирование надстройки VSTO
Класс AddInUtilities
можно вызывать из решений Office различного типа. В этом пошаговом руководстве будет использоваться код VBA в книге Excel. Дополнительные сведения о других типах решений Office, которые можно также использовать, см. в разделе "Код вызова" в надстройках VSTO из других решений Office.
Для тестирования надстройки VSTO выполните следующие действия.
Нажмите клавишу F5 для запуска проекта.
В Excel сохраните активную книгу как книгу Excel с поддержкой макросов (*.xlsm). Сохраните ее в удобном месте, например на рабочем столе.
На ленте перейдите на вкладку Разработчик .
Примечание.
Если вкладка Разработчик не отображается, сделайте ее видимой. Дополнительные сведения см. в разделе "Практическое руководство. Отображение вкладки разработчика на ленте".
В группе Код щелкните Visual Basic.
Открывается редактор Visual Basic.
В окне Проект дважды щелкните ThisWorkbook.
Открывается файл кода для объекта
ThisWorkbook
.Добавьте следующий код VBA в файл кода. Этот код сначала получает объект COMAddIn, представляющий надстройку VSTO ExcelImportData . Затем код использует свойство Object объекта COMAddIn для вызова
ImportData
метода.Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End Sub
Нажмите клавишу F5.
Убедитесь, что новый лист Imported Data (Импортированные данные) добавлен в книгу. Также убедитесь, что ячейка A1 содержит строку This is my data(Это мои данные).
Выйдите из Excel.
Следующие шаги
Дополнительные сведения о программировании надстроек VSTO см. в следующих статьях:
Для автоматизации ведущего приложения и выполнения других задач в проектах надстроек VSTO используйте класс
ThisAddIn
. Дополнительные сведения см. в разделе "Надстройки VSTO программы".Создание настраиваемой области задач в надстройке VSTO. Дополнительные сведения см. в разделе "Пользовательские области задач" и "Практическое руководство. Добавление настраиваемой области задач в приложение".
Настройте ленту в надстройке VSTO. Дополнительные сведения см. в разделе " Обзор ленты" и "Практическое руководство. Начало настройки ленты".