VSTO 추가 기능 프로그램Program VSTO Add-ins

VSTO 추가 기능을 만들어 Microsoft Office 애플리케이션을 확장하는 경우 프로젝트의 ThisAddIn 클래스에 대해 직접 코드를 작성합니다.When you extend a Microsoft Office application by creating a VSTO Add-in, you write code directly against the ThisAddIn class in your project. 이 클래스를 사용하여 Microsoft Office 호스트 애플리케이션의 개체 모델 액세스, 애플리케이션의 UI(사용자 인터페이스) 사용자 지정, 다른 Office 솔루션에 VSTO 추가 기능의 개체 표시 등의 작업을 수행할 수 있습니다.You can use this class to perform tasks such as accessing the object model of the Microsoft Office host application, customizing the user interface (UI) of the application, and exposing objects in your VSTO Add-in to other Office solutions.

적용 대상: 이 항목의 정보는 VSTO 추가 기능의 프로젝트에 적용 됩니다 - .Applies to: The information in this topic applies to VSTO Add-in projects. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조 하세요.For more information, see Features available by Office application and project type.

VSTO 추가 기능 프로젝트에서 코드 작성의 일부 측면은 Visual Studio의 다른 프로젝트 유형과 다릅니다.Some aspects of writing code in VSTO Add-in projects are different from other types of projects in Visual Studio. 이러한 차이점 대부분은 Office 개체 모델이 관리 코드에 표시되는 방식에 기인합니다.Many of these differences are caused by the way the Office object models are exposed to managed code. 자세한 내용은 Office 솔루션에서 코드 작성을 참조 하세요.For more information, see Write code in Office solutions.

Visual Studio에서 Office 개발 도구를 사용 하 여 만들 수 있는 VSTO 추가 기능 및 다른 유형의 솔루션에 대 한 일반적인 내용은 office 솔루션 개발 개요 (VSTO)를 참조 하세요.For general information about VSTO Add-ins and other types of solutions you can create by using the Office development tools in Visual Studio, see Office solutions development overview (VSTO).

ThisAddIn 클래스 사용Use the ThisAddIn class

ThisAddIn 클래스에서 VSTO 추가 기능 코드 작성을 시작할 수 있습니다.You can start writing your VSTO Add-in code in the ThisAddIn class. Visual Studio는 Visual BasicVisual Basic VSTO 추가 기능 프로젝트의 ThisAddIn (in) 또는 ThisAddIn.cs (c #) 코드 파일에이 클래스를 자동으로 생성 합니다.Visual Studio automatically generates this class in the ThisAddIn.vb (in Visual BasicVisual Basic) or ThisAddIn.cs (in C#) code file in your VSTO Add-in project. Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime 은 Microsoft Office 애플리케이션에서 VSTO 추가 기능을 로드할 때 이 클래스를 자동으로 인스턴스화합니다.The Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime automatically instantiates this class for you when the Microsoft Office application loads your VSTO Add-in.

ThisAddIn 클래스에는 두 가지 기본 이벤트 처리기가 있습니다.There are two default event handlers in the ThisAddIn class. VSTO 추가 기능이 로드될 때 코드를 실행하려면 ThisAddIn_Startup 이벤트 처리기에 코드를 추가합니다.To run code when the VSTO Add-in is loaded, add code to the ThisAddIn_Startup event handler. VSTO 추가 기능이 언로드되기 직전에 코드를 실행하려면 ThisAddIn_Shutdown 이벤트 처리기에 코드를 추가합니다.To run code just before the VSTO Add-in is unloaded, add code to the ThisAddIn_Shutdown event handler. 이러한 이벤트 처리기에 대 한 자세한 내용은 Office 프로젝트의 이벤트를 참조 하세요.For more information about these event handlers, see Events in Office projects.

참고

Outlook에서는 기본적으로 VSTO 추가 기능이 언로드될 때 ThisAddIn_Shutdown 이벤트 처리기가 항상 호출되지는 않습니다.In Outlook, by default the ThisAddIn_Shutdown event handler is not always called when the VSTO Add-in is unloaded. 자세한 내용은 Office 프로젝트의 이벤트를 참조 하세요.For more information, see Events in Office projects.

호스트 응용 프로그램의 개체 모델에 액세스Access the object model of the host application

호스트 애플리케이션의 개체 모델에 액세스하려면 Application 클래스의 ThisAddIn 필드를 사용합니다.To access the object model of the host application, use the Application field of the ThisAddIn class. 이 필드는 호스트 애플리케이션의 현재 인스턴스를 나타내는 개체를 반환합니다.This field returns an object that represents the current instance of the host application. 다음 표에서는 각 VSTO 추가 기능 프로젝트에서 Application 필드에 대한 반환 값의 형식을 보여 줍니다.The following table lists the type of the return value for the Application field in each VSTO Add-in project.

호스트 애플리케이션Host application 반환 값 형식Return value type
Microsoft Office ExcelMicrosoft Office Excel Application
Microsoft Office InfoPathMicrosoft Office InfoPath Application
Microsoft Office OutlookMicrosoft Office Outlook Application
Microsoft Office PowerPointMicrosoft Office PowerPoint 응용 프로그램Application
Microsoft Office ProjectMicrosoft Office Project Microsoft.Office.Interop.MSProject.ApplicationMicrosoft.Office.Interop.MSProject.Application
Microsoft Office VisioMicrosoft Office Visio Microsoft.Office.Interop.Visio.ApplicationMicrosoft.Office.Interop.Visio.Application
Microsoft Office WordMicrosoft Office Word Application

다음 코드 예제에서는 필드를 사용 하 여 Application Microsoft Office Excel 용 VSTO 추가 기능에서 새 통합 문서를 만드는 방법을 보여 줍니다.The following code example shows how to use the Application field to create a new workbook in a VSTO Add-in for Microsoft Office Excel. 이 예제는 ThisAddIn 클래스에서 실행하기 위한 것입니다.This example is intended to be run from the ThisAddIn class.

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

ThisAddIn 클래스 외부에서 동일한 작업을 수행하려면 Globals 개체를 사용하여 ThisAddIn 클래스에 액세스합니다.To do the same thing from outside the ThisAddIn class, use the Globals object to access the ThisAddIn class. 개체에 대 한 자세한 내용은 Globals Office 프로젝트의 개체에 대 한 전역 액세스를 참조 하세요.For more information about the Globals object, see Global access to objects in Office projects.

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

특정 Microsoft Office 애플리케이션의 개체 모델에 대한 자세한 내용은 다음 항목을 참조하세요.For more information about the object models of specific Microsoft Office applications, see the following topics:

Office 응용 프로그램이 시작 될 때 문서 액세스Access a document when the Office application starts

일부 Office 2010Office 2010 애플리케이션은 시작될 때 자동으로 문서를 열지 않고, Office 2013Office 2013 애플리케이션은 시작될 때 문서를 열지 않습니다.Not all Office 2010Office 2010 applications automatically open a document when you start them, and none of the Office 2013Office 2013 applications open a document when you start them. 따라서 ThisAdd-In_Startup 코드에서 문서를 열어야 하는 경우 이벤트 처리기에 코드를 추가 하지 마세요.Therefore, don't add code in the ThisAdd-In_Startup event handler if the code requires a document to be open. 대신 사용자가 문서를 만들거나 열 때 Office 애플리케이션에서 발생하는 이벤트에 해당 코드를 추가합니다.Instead, add that code to an event that the Office application raises when a user creates or opens a document. 이런 식으로 코드에서 작업을 수행하기 전에 문서가 열리도록 할 수 있습니다.That way, you can guarantee that a document is open before your code performs operations on it.

다음 코드 예제에서는 사용자가 문서를 만들거나 기존 문서를 여는 경우에만 Word에서 문서로 작업합니다.The following code example works with a document in Word only when the user creates a document or opens an existing document.

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        this.Application.DocumentOpen +=
new Word.ApplicationEvents4_DocumentOpenEventHandler(WorkWithDocument);

        ((Word.ApplicationEvents4_Event)this.Application).NewDocument +=
            new Word.ApplicationEvents4_NewDocumentEventHandler(WorkWithDocument);  
    }
    
    private void WorkWithDocument(Microsoft.Office.Interop.Word.Document Doc)
    {
        try
        {
            Word.Range rng = Doc.Range(0, 0);
            rng.Text = "New Text";
            rng.Select();
        }
        catch (Exception ex)
        {
            // Handle exception if for some reason the document is not available.
        }
    }
Private Sub ThisAddIn_Startup() Handles Me.Startup

    AddHandler Application.NewDocument, AddressOf WorkWithDocument

End Sub

Private Sub WorkWithDocument(ByVal Doc As Microsoft.Office.Interop.Word.Document) _
    Handles Application.DocumentOpen

    Dim rng As Word.Range = Doc.Range(Start:=0, End:=0)
    rng.Text = " New Text "
    rng.Select()

End Sub

다른 작업에 사용할 ThisAddIn 멤버ThisAddIn members to use for other tasks

다음 표에서는 다른 일반적인 작업에 대해 설명하고 작업을 수행하는 데 사용할 수 있는 ThisAddIn 클래스의 멤버를 보여 줍니다.The following table describes other common tasks and shows which members of the ThisAddIn class you can use to perform the tasks.

TaskTask 사용할 멤버Member to use
VSTO 추가 기능이 로드될 때 코드를 실행하여 VSTO 추가 기능을 초기화합니다.Run code to initialize the VSTO Add-in when the VSTO Add-in is loaded. ThisAddIn_Startup 메서드에 코드를 추가합니다.Add code to the ThisAddIn_Startup method. Startup 이벤트에 대한 기본 이벤트 처리기입니다.This is the default event handler for the Startup event. 자세한 내용은 Office 프로젝트의 이벤트를 참조 하세요.For more information, see Events in Office projects.
VSTO 추가 기능이 언로드되기 전에 코드를 실행하여 VSTO 추가 기능에서 사용된 리소스를 정리합니다.Run code to clean up resources used by the VSTO Add-in before the VSTO Add-in is unloaded. ThisAddIn_Shutdown 메서드에 코드를 추가합니다.Add code to the ThisAddIn_Shutdown method. Shutdown 이벤트에 대한 기본 이벤트 처리기입니다.This is the default event handler for the Shutdown event. 자세한 내용은 Office 프로젝트의 이벤트를 참조 하세요.For more information, see Events in Office projects. 참고: Outlook에서는 기본적으로 ThisAddIn_Shutdown VSTO 추가 기능이 언로드될 때 이벤트 처리기가 항상 호출 되지는 않습니다.Note: In Outlook, by default the ThisAddIn_Shutdown event handler is not always called when the VSTO Add-in is unloaded. 자세한 내용은 Office 프로젝트의 이벤트를 참조 하세요.For more information, see Events in Office projects.
사용자 지정 작업창을 표시합니다.Display a custom task pane. CustomTaskPanes 필드를 사용합니다.Use the CustomTaskPanes field. 자세한 내용은 사용자 지정 작업 창을 참조 하세요.For more information, see Custom task panes.
다른 Microsoft Office 솔루션에 VSTO 추가 기능의 개체를 표시합니다.Expose objects in your VSTO Add-in to other Microsoft Office solutions. RequestComAddInAutomationService 메서드를 재정의합니다.Override the RequestComAddInAutomationService method. 자세한 내용은 다른 Office 솔루션에서 VSTO 추가 기능의 코드 호출을 참조 하세요.For more information, see Call code in VSTO Add-ins from other Office solutions.
확장성 인터페이스를 구현하여 Microsoft Office 시스템의 기능을 사용자 지정합니다.Customize a feature in the Microsoft Office system by implementing an extensibility interface. RequestService 메서드를 재정의하여 인터페이스를 구현하는 클래스의 인스턴스를 반환합니다.Override the RequestService method to return an instance of a class that implements the interface. 자세한 내용은 확장성 인터페이스를 사용 하 여 UI 기능 사용자 지정을 참조 하세요.For more information, see Customize UI features by using extensibility interfaces. 참고: 리본 UI를 사용자 지정 하려면 메서드를 재정의할 수도 있습니다 CreateRibbonExtensibilityObject .Note: To customize the ribbon UI, you can also override the CreateRibbonExtensibilityObject method.

ThisAddIn 클래스 디자인 이해Understand the design of the ThisAddIn class

.NET Framework 4.NET Framework 4를 대상으로 하는 프로젝트에서 AddIn 은 인터페이스입니다.In projects that target the .NET Framework 4.NET Framework 4, AddIn is an interface. ThisAddIn 클래스는 AddInBase 클래스에서 파생됩니다.The ThisAddIn class derives from the AddInBase class. 이 기본 클래스는 해당 멤버에 대한 모든 호출을 AddIn 에서 Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime인터페이스의 내부 구현으로 리디렉션합니다.This base class redirects all calls to its members to an internal implementation of the AddIn interface in the Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime.

Outlook의 VSTO 추가 기능 프로젝트에서 ThisAddIn 클래스는 .NET Framework 3.5를 대상으로 하는 프로젝트의 Microsoft.Office.Tools.Outlook.OutlookAddIn 클래스 및 .NET Framework 4.NET Framework 4를 대상으로 하는 프로젝트의 OutlookAddInBase에서 파생됩니다.In VSTO Add-in projects for Outlook, the ThisAddIn class derives from the Microsoft.Office.Tools.Outlook.OutlookAddIn class in projects that target the .NET Framework 3.5, and from OutlookAddInBase in projects that target the .NET Framework 4.NET Framework 4. 이러한 기본 클래스는 양식 영역을 지원하기 위해 몇 가지 추가 기능을 제공합니다.These base classes provide some additional functionality to support form regions. 양식 영역에 대 한 자세한 내용은 Outlook 양식 영역 만들기를 참조 하세요.For more information about form regions, see Create Outlook form regions.

Microsoft Office 응용 프로그램의 사용자 인터페이스 사용자 지정Customize the user interface of Microsoft Office applications

VSTO 추가 기능을 사용하여 Microsoft Office 애플리케이션의 UI를 프로그래밍 방식으로 사용자 지정할 수 있습니다.You can programmatically customize the UI of Microsoft Office applications by using a VSTO Add-in. 예를 들어 리본을 사용자 지정하거나, 사용자 지정 작업창을 표시하거나, Outlook에서 사용자 지정 양식 영역을 만들 수 있습니다.For example, you can customize the ribbon, display a custom task pane, or create a custom form region in Outlook. 자세한 내용은 OFFICE UI 사용자 지정을 참조 하세요.For more information, see Office UI customization.

Visual Studio는 사용자 지정 작업창, 리본 사용자 지정 및 Outlook 양식 영역을 만드는 데 사용할 수 있는 디자이너 및 클래스를 제공합니다.Visual Studio provides designers and classes that you can use to create custom task panes, ribbon customizations, and Outlook form regions. 이러한 디자이너 및 클래스를 사용하면 이러한 기능을 사용자 지정하는 프로세스를 간소화할 수 있습니다.These designers and classes help to simplify the process of customizing these features. 자세한 내용은 사용자 지정 작업창, 리본 디자이너Outlook 양식 영역 만들기를 참조 하세요.For more information, see Custom task panes, Ribbon Designer, and Create Outlook form regions.

클래스 및 디자이너에서 지원하지 않는 방식으로 이러한 기능 중 하나를 사용자 지정하려는 경우 VSTO 추가 기능에서 확장성 인터페이스 를 구현하여 이러한 기능을 사용자 지정할 수도 있습니다.If you want to customize one of these features in a way that is not supported by the classes and designers, you can also customize these features by implementing an extensibility interface in your VSTO Add-in. 자세한 내용은 확장성 인터페이스를 사용 하 여 UI 기능 사용자 지정을 참조 하세요.For more information, see Customize UI features by using extensibility interfaces.

또한 문서 및 통합 문서의 동작을 확장하는 호스트 항목을 생성하여 Word 문서 및 Excel 통합 문서의 UI를 수정할 수 있습니다.In addition, you can modify the UI of Word documents and Excel workbooks by generating host items that extend the behavior of documents and workbooks. 그러면 문서 및 워크시트에 관리되는 컨트롤을 추가할 수 있습니다.This enables you to add managed controls to documents and worksheets. 자세한 내용은 런타임에 VSTO 추가 기능에서 Word 문서 및 Excel 통합 문서 확장을 참조 하세요.For more information, see Extend Word documents and Excel workbooks in VSTO Add-ins at run time.

다른 솔루션에서 VSTO 추가 기능의 코드 호출Call code in VSTO Add-ins from other solutions

VSTO 추가 기능의 개체를 다른 Office 솔루션을 비롯한 다른 솔루션에 표시할 수 있습니다.You can expose objects in your VSTO Add-in to other solutions, including other Office solutions. 이는 해당 VSTO 추가 기능이 다른 솔루션에서 사용하도록 하려는 서비스를 제공하는 경우에 유용합니다.This is useful if your VSTO Add-in provides a service that you want to enable other solutions to use. 예를 들어 웹 서비스의 재무 데이터에 대해 계산을 수행 하는 Microsoft Office Excel 용 VSTO 추가 기능이 있는 경우 다른 솔루션은 런타임에 Excel VSTO 추가 기능을 호출 하 여 이러한 계산을 수행할 수 있습니다.For example, if you have a VSTO Add-in for Microsoft Office Excel that performs calculations on financial data from a web service, other solutions can perform these calculations by calling into the Excel VSTO Add-in at run time.

자세한 내용은 다른 Office 솔루션에서 VSTO 추가 기능의 코드 호출을 참조 하세요.For more information, see Call code in VSTO Add-ins from other Office solutions.

참고 항목See also