응용 프로그램 수준 추가 기능 프로그래밍

응용 프로그램 수준 추가 기능을 만들어 Microsoft Office 응용 프로그램을 확장할 때는 프로젝트의 ThisAddIn 클래스에 대해 직접 코드를 작성합니다. 이 클래스를 사용하면 Microsoft Office 호스트 응용 프로그램의 개체 모델에 액세스하고, 응용 프로그램의 UI(사용자 인터페이스)를 사용자 지정하고, 추가 기능의 개체를 다른 Office 솔루션에 노출하는 등의 작업을 수행할 수 있습니다.

적용 대상: 이 항목의 정보는 Microsoft Office 2010 및 2007 Microsoft Office system의 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

추가 기능 프로젝트에는 Visual Studio의 다른 프로젝트 형식과 차이가 있는 코드 작성 측면이 몇 가지 있습니다. 이러한 차이점은 대부분 Office 개체 모델이 관리 코드에 노출되는 방식 때문에 발생합니다. 자세한 내용은 Office 솔루션에서 코드 작성을 참조하십시오.

응용 프로그램 수준 추가 기능과 Visual Studio의 Office 개발 도구를 사용하여 만들 수 있는 그 밖의 솔루션 형식에 대한 일반적인 내용은 Office 솔루션 개발 개요를 참조하십시오.

ThisAddIn 클래스 사용

ThisAddIn 클래스에 추가 기능 코드를 작성할 수 있습니다. Visual Studio에서는 추가 기능 프로젝트의 ThisAddIn.vb(Visual Basic의 경우) 또는 ThisAddIn.cs(C#의 경우) 코드 파일에 이 클래스를 자동으로 생성합니다. Microsoft Office 응용 프로그램에서 추가 기능을 로드할 때 Microsoft Visual Studio Tools for Office Runtime에서는 자동으로 이 클래스를 인스턴스화합니다.

ThisAddIn 클래스에는 두 개의 기본 이벤트 처리기가 있습니다. 추가 기능이 로드될 때 코드를 실행하려면 ThisAddIn_Startup 이벤트 처리기에 코드를 추가합니다. 추가 기능이 언로드되기 직전에 코드를 실행하려면 ThisAddIn_Shutdown 이벤트 처리기에 코드를 추가합니다. 이러한 이벤트 처리기에 대한 자세한 내용은 Office 프로젝트의 이벤트를 참조하십시오.

참고

Outlook 2010에서는 기본적으로 추가 기능이 언로드될 때 ThisAddIn_Shutdown 이벤트 처리기가 항상 호출되지는 않습니다. 자세한 내용은 Office 프로젝트의 이벤트를 참조하십시오.

호스트 응용 프로그램 개체 모델에 액세스

호스트 응용 프로그램의 개체 모델에 액세스하려면 ThisAddIn 클래스의 Application 필드를 사용합니다. 이 필드에서는 호스트 응용 프로그램의 현재 인스턴스를 나타내는 개체를 반환합니다. 다음 표에서는 각 추가 기능 프로젝트의 Application 필드에 대한 반환 값 형식을 보여 줍니다.

호스트 응용 프로그램

반환 값 형식

Microsoft Office Excel

Microsoft.Office.Interop.Excel.Application

Microsoft Office InfoPath

Microsoft.Office.Interop.InfoPath.Application

Microsoft Office Outlook

Microsoft.Office.Interop.Outlook.Application

Microsoft Office PowerPoint

Microsoft.Office.Interop.PowerPoint.Application

Microsoft Office Project

Microsoft.Office.Interop.MSProject.Application

Microsoft Office Visio

Microsoft.Office.Interop.Visio.Application

Microsoft Office Word

Microsoft.Office.Interop.Word.Application

다음 코드 예제에서는 Application 필드를 사용하여 Microsoft Office Excel용 추가 기능에 새 통합 문서를 만드는 방법을 보여 줍니다. 이 예제는 ThisAddIn 클래스에서 실행할 수 있습니다.

Dim newWorkbook As Excel.Workbook = Me.Application.Workbooks.Add()
Excel.Workbook newWorkbook = this.Application.Workbooks.Add(System.Type.Missing);

ThisAddIn 클래스 외부에서 동일한 작업을 수행하려면 Globals 개체를 사용하여 ThisAddIn 클래스에 액세스합니다. Globals 개체에 대한 자세한 내용은 Office 프로젝트의 개체에 전역 액세스를 참조하십시오.

Dim newWorkbook As Excel.Workbook = Globals.ThisAddIn.Application.Workbooks.Add()
Excel.Workbook newWorkbook = Globals.ThisAddIn.Application.Workbooks.Add(System.Type.Missing);

특정 Microsoft Office 응용 프로그램의 개체 모델에 대한 자세한 내용은 다음 항목을 참조하십시오.

다른 작업에 사용할 ThisAddIn 멤버

다음 표에서는 일반적인 다른 작업을 설명하고 작업을 수행하는 데 사용할 수 있는 ThisAddIn 클래스의 멤버를 보여 줍니다.

Task

사용할 멤버

추가 기능이 로드될 때 추가 기능을 초기화하는 코드를 실행합니다.

ThisAddIn_Startup 메서드에 코드를 추가합니다. 이 메서드는 Startup 이벤트의 기본 이벤트 처리기입니다. 자세한 내용은 Office 프로젝트의 이벤트를 참조하십시오.

추가 기능이 언로드되기 전에 추가 기능에 사용된 리소스를 정리하는 코드를 실행합니다.

ThisAddIn_Shutdown 메서드에 코드를 추가합니다. 이 메서드는 Shutdown 이벤트의 기본 이벤트 처리기입니다. 자세한 내용은 Office 프로젝트의 이벤트를 참조하십시오.

참고참고
Outlook 2010에서는 기본적으로 추가 기능이 언로드될 때 ThisAddIn_Startup 이벤트 처리기가 항상 호출되지는 않습니다.자세한 내용은 Office 프로젝트의 이벤트을 참조하십시오.

사용자 지정 작업 창을 표시합니다.

CustomTaskPanes 필드를 사용합니다. 자세한 내용은 사용자 지정 작업 창 개요를 참조하십시오.

열려 있는 Word 문서나 Excel 통합 문서에서 인식할 수 있는 스마트 태그를 만듭니다.

참고참고
Excel 2010 및 Word 2010에서 스마트 태그는 더 이상 사용되지 않습니다.자세한 내용은 스마트 태그 개요를 참조하십시오.

Excel 또는 Word용 추가 기능에서 VstoSmartTags 필드를 사용합니다. 자세한 내용은 스마트 태그 개요를 참조하십시오.

다른 Microsoft Office 솔루션에 추가 기능의 개체를 노출합니다.

RequestComAddInAutomationService 메서드를 재정의합니다. 자세한 내용은 다른 Office 솔루션에서 응용 프로그램 수준 추가 기능의 코드 호출을 참조하십시오.

확장성 인터페이스를 구현하여 Microsoft Office system의 기능을 사용자 지정합니다.

인터페이스를 구현하는 클래스의 인스턴스를 반환하려면 RequestService 메서드를 재정의합니다. 자세한 내용은 확장성 인터페이스를 사용하여 UI 기능 사용자 지정을 참조하십시오.

참고참고
리본 UI를 사용자 지정하기 위해 CreateRibbonExtensibilityObject 메서드를 재정의할 수도 있습니다.

ThisAddIn 클래스의 디자인 이해

.NET Framework 3.5를 대상으로 하는 프로젝트에서는 ThisAddIn 클래스가 Microsoft Visual Studio Tools for Office Runtime의 Microsoft.Office.Tools.AddIn 클래스에서 파생됩니다.

.NET Framework 4를 대상으로 하는 프로젝트에서는 Microsoft.Office.Tools.AddIn이 인터페이스이므로 생성된 ThisAddIn 클래스가 해당 클래스에서 구현을 파생할 수 없습니다. 대신 ThisAddIn 클래스가 Microsoft.Office.Tools.AddInBase 클래스에서 파생됩니다. 이 기본 클래스는 멤버에 대한 모든 호출을 Microsoft Visual Studio Tools for Office Runtime에 있는 Microsoft.Office.Tools.AddIn 인터페이스의 내부 구현으로 리디렉션합니다. Microsoft Visual Studio Tools for Office Runtime에서 .NET Framework 3.5 및 .NET Framework 4를 대상으로 하는 프로젝트의 차이점에 대한 자세한 내용은 Visual Studio Tools for Office 런타임 개요를 참조하십시오.

Outlook용 추가 기능 프로젝트에서 ThisAddIn 클래스는 .NET Framework 3.5를 대상으로 하는 프로젝트의 Microsoft.Office.Tools.Outlook.OutlookAddIn 클래스와 .NET Framework 4를 대상으로 하는 프로젝트의 Microsoft.Office.Tools.Outlook.OutlookAddInBase에서 파생됩니다. 이러한 기본 클래스는 양식 영역을 지원하기 위해 몇 가지 기능을 제공합니다. 양식 영역에 대한 자세한 내용은 Outlook 양식 영역 만들기를 참조하십시오.

Microsoft Office 응용 프로그램의 사용자 인터페이스 사용자 지정

응용 프로그램 수준 추가 기능을 사용하여 Microsoft Office 응용 프로그램의 UI(사용자 인터페이스)를 프로그래밍 방식으로 사용자 지정할 수 있습니다. 예를 들어 리본 메뉴를 사용자 지정하거나 사용자 지정 작업 창을 표시하거나 Outlook에서 사용자 지정 양식 영역을 만들 수 있습니다. 자세한 내용은 Office UI 사용자 지정를 참조하십시오.

Visual Studio에서는 사용자 지정 작업 창, 리본 메뉴 사용자 지정 및 Outlook 양식 영역을 만드는 데 사용할 수 있는 디자이너와 클래스를 제공합니다. 이러한 디자이너 및 클래스는 해당 기능에 대한 사용자 지정 과정을 단순화하는 데 유용합니다. 자세한 내용은 사용자 지정 작업 창 개요, 리본 디자이너Outlook 양식 영역 만들기를 참조하십시오.

클래스 및 디자이너에서 지원하지 않는 방식으로 이러한 기능 중 하나를 사용자 지정하려는 경우 추가 기능의 확장성 인터페이스를 구현하여 해당 기능을 사용자 지정할 수도 있습니다. 자세한 내용은 확장성 인터페이스를 사용하여 UI 기능 사용자 지정을 참조하십시오.

Word 문서와 Excel 통합 문서의 동작을 확장하는 호스트 항목을 생성하여 문서 및 통합 문서의 UI를 수정할 수도 있습니다. 이를 통해 문서 및 워크시트에 관리되는 컨트롤과 스마트 태그를 추가할 수 있습니다. 자세한 내용은 런타임에 응용 프로그램 수준 추가 기능의 Word 문서 및 Excel 통합 문서 확장을 참조하십시오.

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

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

자세한 내용은 다른 Office 솔루션에서 응용 프로그램 수준 추가 기능의 코드 호출을 참조하십시오.

참고 항목

작업

연습: VBA에서 응용 프로그램 수준 추가 기능의 코드 호출

방법: Visual Studio에서 Office 프로젝트 만들기

개념

런타임에 응용 프로그램 수준 추가 기능의 Word 문서 및 Excel 통합 문서 확장

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

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

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

Office 솔루션에서 코드 작성

기타 리소스

Office 솔루션 개발