다른 Office 솔루션에서 응용 프로그램 수준 추가 기능의 코드 호출

업데이트: 2007년 11월

적용 대상

이 항목의 정보는 지정된 Visual Studio Tools for Office 프로젝트 및 Microsoft Office 버전에만 적용됩니다.

프로젝트 형식

  • 응용 프로그램 수준 프로젝트

Microsoft Office 버전

  • 2007 Microsoft Office system

  • Microsoft Office 2003

자세한 내용은 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

다른 Microsoft Office 솔루션에 추가 기능의 개체를 노출할 수 있습니다. 이 방법은 다른 Office 솔루션에서 사용할 수 있는 서비스를 추가 기능에서 제공하는 경우에 유용합니다. 예를 들어 웹 서비스에서 금융 데이터에 대한 계산을 수행하는 Microsoft Office Excel용 추가 기능이 있는 경우 다른 Office 솔루션에서 런타임에 Excel 추가 기능을 호출하여 이러한 계산을 수행할 수 있습니다.

Visual Studio Tools for Office에서는 문서 수준 사용자 지정에 대해 유사한 기능도 제공합니다. 2007 Microsoft Office system용 사용자 지정을 개발하는 경우 문서의 VBA 코드에서 사용자 지정의 코드를 호출할 수 있습니다. 자세한 내용은 VBA에서 문서 수준 사용자 지정의 코드 호출을 참조하십시오.

추가 기능의 코드를 호출할 수 있는 Office 솔루션

다음 형식의 Office 솔루션에 추가 기능의 개체를 노출할 수 있습니다.

  • 다른 Visual Studio Tools for Office 추가 기능

  • 추가 기능과 동일한 응용 프로그램 프로세스에 로드되는 문서 수준 사용자 지정

  • COM 추가 기능. 즉, IDTExtensibility2 인터페이스를 직접 구현하는 추가 기능

  • 추가 기능과 동일한 응용 프로그램 프로세스에 로드되는 문서의 VBA(Visual Basic for Applications) 코드

다른 Office 솔루션에 개체 노출

다른 추가 기능에 개체를 노출하려면 ThisAddIn 클래스의 RequestComAddInAutomationService 메서드를 재정의합니다. 다른 Office 솔루션에 노출할 개체를 반환합니다.

추가 기능이 로드된 경우 Visual Studio Tools for Office 런타임에서 RequestComAddInAutomationService 메서드를 호출합니다. 해당 런타임에서는 추가 기능을 나타내는 COMAddIn 개체의 Object 속성에 반환된 개체를 할당합니다. 이 COMAddIn 개체는 다른 Office 솔루션에서 사용할 수 있습니다.

반환된 개체의 요구 사항

RequestComAddInAutomationService를 구현할 때는 다음 요구 사항에 맞는 클래스의 인스턴스를 반환해야 합니다.

반환되는 개체가 이러한 요구 사항을 충족하지 않으면 구현이 호출된 후 Visual Studio Tools for Office 런타임에서 InvalidCastException을 throw합니다.

이러한 요구 사항을 충족하는 클래스 예제는 연습: VBA에서 응용 프로그램 수준 추가 기능의 코드 호출을 참조하십시오.

예제

다음 코드 예제에서는 RequestComAddInAutomationService를 재정의하는 방법을 보여 줍니다. 이 예제에서는 다른 Office 솔루션에 노출할 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 개체를 가져옵니다. Application 클래스의 COMAddIns 속성을 사용하여 사용 가능한 모든 추가 기능에 액세스할 수 있습니다.

  2. COMAddIn 개체의 Object 속성에 액세스합니다.

다음 코드 예제에서는 VBA를 사용하여 추가 기능의 메서드를 호출하는 방법을 보여 줍니다. 이 VBA 매크로는 ExcelImportData라는 추가 기능에 정의된 ImportData라는 메서드를 호출합니다. 보다 큰 연습의 컨텍스트에서 이 코드를 보려면 연습: 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 솔루션 개발

추가 기능 호스트 항목

확장성 인터페이스를 사용하여 UI 기능 사용자 지정

응용 프로그램 수준 추가 기능 아키텍처