Вызов кода в надстройках уровня приложения из других решений Office
Обновлен: Ноябрь 2007
Применение |
---|
Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
Объекты в надстройке можно предоставлять другим решениям Microsoft Office. Это полезно, когда требуется включить возможность использования службы, предоставляемой надстройкой, другими решениями Office. Например, если существует надстройка для Microsoft Office Excel, выполняющая вычисления финансовых данных из веб-службы, то другие решения Office смогут выполнять такие вычисления путем вызова этой надстройки Excel во время выполнения.
Visual Studio Tools for Office также предоставляет подобную возможность для настроек на уровне документа. При разработке настройки для выпуска 2007 системы Microsoft Office код в ней можно вызывать из VBA-кода в документе. Дополнительные сведения см. в разделе Вызов кода настроек уровня документа из VBA.
Решения Office, способные вызывать код в надстройке
Объекты в надстройке можно предоставлять следующим типам решений Office:
другие надстройки Visual Studio Tools for Office;
настройки на уровне документа, загруженные в тот же процесс приложения, что и надстройка;
надстройки модели COM (то есть надстройки, реализующие интерфейс IDTExtensibility2 напрямую);
VBA-код в документе, загруженный в тот же процесс приложения, что и надстройка.
Предоставление объектов другим решениям Office
Чтобы предоставить объект другим надстройкам, следует переопределить.метод RequestComAddInAutomationService в классе ThisAddIn. Предоставляемый объект необходимо вернуть другим решениям Office.
После загрузки надстройки среда выполнения Visual Studio Tools for Office вызывает метод RequestComAddInAutomationService. Среда выполнения назначает возвращаемый объект свойству Object объекта COMAddIn, представляющего надстройку. Этот объект COMAddIn доступен другим решениям Office.
Требования возвращаемого объекта
Реализация метода RequestComAddInAutomationService должна возвращать экземпляр класса, соответствующий следующим требованиям:
Класс должен быть открытым, а атрибуту ComVisibleAttribute должно быть присвоено значение true.
Класс должен предоставлять доступ к интерфейсу IDispatch. Этого можно добиться двумя способами:
Класс может реализовать интерфейс, в котором значение атрибута ComVisibleAttribute равно true, а значение атрибута InterfaceTypeAttribute равно InterfaceIsIDispatch или InterfaceIsDual.
–или–
В классе значение атрибута ClassInterfaceAttribute может быть равно AutoDual или AutoDispatch.
Если возвращаемый объект не удовлетворяет данным требованиям, среда выполнения Visual Studio Tools for Office вызовет исключение InvalidCastException после вызова этой реализации метода.
Пример использования класса, соответствующего этим требованиям, см. в разделе Пошаговое руководство. Вызов кода из VBA в настройках на уровне приложения.
Пример
В следующем примере кода показывается переопределение метода RequestComAddInAutomationService. Данный пример предполагает, что определен класс с именем AddInUtilities. При этом класс AddInUtilities должен соответствовать требованиям, указанным выше. Чтобы просмотреть этот код в контексте полного руководства, см. раздел Пошаговое руководство. Вызов кода из VBA в настройках на уровне приложения.
Private utilities As AddInUtilities
Protected Overrides Function RequestComAddInAutomationService() As Object
If utilities Is Nothing Then
utilities = New AddInUtilities()
End If
Return utilities
End Function
private AddInUtilities utilities;
protected override object RequestComAddInAutomationService()
{
if (utilities == null)
utilities = new AddInUtilities();
return utilities;
}
Доступ к объектам из других решений Office
Выполните следующие шаги в коде другого решения Office (отличного от предоставленной надстройки):
Получите объект COMAddIn, представляющий предоставленную настройку. Доступ ко всем доступным надстройкам можно получить с помощью свойства COMAddIns класса Application.
В следующем примере кода показано использование VBA для вызова метода в надстройке. Этот макрос VBA вызывает метод с именем ImportData, определенный в надстройке с именем ExcelImportData. Чтобы просмотреть этот код в контексте полного руководства, см. раздел Пошаговое руководство. Вызов кода из VBA в настройках на уровне приложения.
Sub CallVSTOMethod()
Dim addIn As COMAddIn
Dim automationbject As Object
Set addIn = Application.COMAddIns("ExcelImportData")
Set automationObject = addIn.Object
automationObject.ImportData
End Sub
См. также
Задачи
Пошаговое руководство. Вызов кода из VBA в настройках на уровне приложения
Практическое руководство. Создание проектов Visual Studio Tools for Office
Основные понятия
Программирование надстроек уровня приложения
Настройка функций пользовательского интерфейса с помощью интерфейсов расширяемости