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


Вызов кода в надстройках уровня приложения из других решений Office

Обновлен: Ноябрь 2007

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office.

Тип проекта

  • Проекты уровня приложения

Версия Microsoft Office

  • Выпуск системы Microsoft Office 2007

  • Microsoft Office 2003

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

Объекты в надстройке можно предоставлять другим решениям 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. Этого можно добиться двумя способами:

Если возвращаемый объект не удовлетворяет данным требованиям, среда выполнения 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 (отличного от предоставленной надстройки):

  1. Получите объект COMAddIn, представляющий предоставленную настройку. Доступ ко всем доступным надстройкам можно получить с помощью свойства COMAddIns класса Application.

  2. Обратитесь к свойству Object объекта COMAddIn.

В следующем примере кода показано использование 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

Основные понятия

Программирование надстроек уровня приложения

Разработка решений Office

Ведущий элемент AddIn

Настройка функций пользовательского интерфейса с помощью интерфейсов расширяемости

Архитектура надстроек уровня приложения