다른 Office 솔루션에서 응용 프로그램 수준 추가 기능의 코드 호출
업데이트: 2007년 11월
적용 대상 |
---|
이 항목의 정보는 지정된 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 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를 구현할 때는 다음 요구 사항에 맞는 클래스의 인스턴스를 반환해야 합니다.
클래스가 public이어야 하고 ComVisibleAttribute 특성이 true로 설정되어야 합니다.
클래스에서 IDispatch 인터페이스를 노출해야 합니다. 클래스에서 이 인터페이스를 노출하는 데는 두 가지 방법이 있습니다.
클래스에서 ComVisibleAttribute가 true로 설정되어 있고 InterfaceTypeAttribute가 InterfaceIsIDispatch 또는 InterfaceIsDual로 설정되어 있는 인터페이스를 구현할 수 있습니다.
- 또는 -
클래스에서 ClassInterfaceAttribute를 AutoDual 또는 AutoDispatch로 설정할 수 있습니다.
반환되는 개체가 이러한 요구 사항을 충족하지 않으면 구현이 호출된 후 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 솔루션의 코드에서 다음 단계를 수행하십시오.
노출된 추가 기능을 나타내는 COMAddIn 개체를 가져옵니다. Application 클래스의 COMAddIns 속성을 사용하여 사용 가능한 모든 추가 기능에 액세스할 수 있습니다.
다음 코드 예제에서는 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 프로젝트 만들기