Office 솔루션에서 코드 작성
Office 프로젝트에는 Visual Studio의 다른 프로젝트 형식과 차이가 있는 코드 작성 측면이 몇 가지 있습니다. 이러한 차이점은 대부분 Office 개체 모델이 관리 코드에 노출되는 방식과 관련이 있으며 Office 프로젝트의 디자인과 관련이 있는 차이점도 있습니다.
적용 대상: 이 항목의 정보는 Microsoft Office 2010 및 2007 Microsoft Office system의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
관리 코드 및 Office 프로그래밍
통합된 Microsoft Office 솔루션을 만들 수 있는 핵심 기술은 COM(Component Object Model) 기술의 일부인 자동화입니다. 자동화를 통해 코드를 사용하여 적절한 프로그래밍 인터페이스를 지원하는 모든 응용 프로그램, DLL 또는 ActiveX 컨트롤에서 노출하는 소프트웨어 개체를 만들고 제어할 수 있습니다.
주 Interop 어셈블리 이해
Microsoft Office 응용 프로그램에서는 자동화에 사용할 수 있도록 많은 기능을 노출합니다. 그러나 Visual Basic 또는 C#과 같은 관리 코드로는 Office 응용 프로그램을 직접 자동화할 수 없습니다. 관리 코드를 사용하여 Office 응용 프로그램을 자동화하려면 Office PIA(주 Interop 어셈블리)를 사용해야 합니다. 주 interop 어셈블리를 사용하면 관리 코드가 Office 응용 프로그램의 COM 기반 개체 모델과 상호 작용할 수 있습니다.
모든 Microsoft Office 응용 프로그램에는 PIA가 있습니다. Visual Studio에서 Office 프로젝트를 만드는 경우 적절한 PIA에 대한 참조가 프로젝트에 자동으로 추가됩니다. 프로젝트에서 다른 Office 응용 프로그램의 기능을 자동화하려면 적절한 PIA에 대한 참조를 수동으로 추가해야 합니다. 자세한 내용은 방법: 주 Interop 어셈블리를 통한 Office 응용 프로그램 대상 선택을 참조하십시오.
디자인 타임 및 런타임에 주 Interop 어셈블리 사용
대부분의 개발 작업을 수행하려면 개발 컴퓨터의 전역 어셈블리 캐시에 Office PIA가 설치 및 등록되어 있어야 합니다. 자세한 내용은 Office 솔루션을 개발할 수 있도록 컴퓨터 구성을 참조하십시오.
.NET Framework 3.5를 대상으로 하는 Office 솔루션을 실행하려면 최종 사용자 컴퓨터에도 PIA가 설치되어 있어야 합니다. 그러나 .NET Framework 4를 대상으로 하는 Office 솔루션을 실행하려면 최종 사용자 컴퓨터에 Office PIA가 없어도 됩니다. 자세한 내용은 Office 솔루션 디자인 및 만들기를 참조하십시오.
주 Interop 어셈블리의 형식 사용
Office PIA에는 Office 응용 프로그램의 개체 모델을 노출하는 형식과 코드에서 직접 사용할 수 없는 추가 인프라 형식의 조합이 포함되어 있습니다. Office PIA의 형식에 대한 개요를 보려면 Overview of Classes and Interfaces in the Office Primary Interop Assemblies를 참조하십시오.
Office PIA의 형식이 COM 기반 개체 모델의 형식에 해당하기 때문에 일반적으로 이러한 형식을 사용하는 방식은 다른 관리되는 형식과 다릅니다. 예를 들어, Office 주 interop 어셈블리에서 선택적 매개 변수를 사용하는 메서드를 호출하는 방식은 프로젝트에서 사용하는 프로그래밍 언어에 따라 달라집니다. 자세한 내용은 다음 항목을 참조하십시오.
Office 프로젝트의 프로그래밍 모델
모든 Office 프로젝트에는 코드에 대한 진입점을 제공하는 생성된 클래스가 하나 이상 포함되어 있습니다. 이러한 클래스를 사용하여 호스트 응용 프로그램의 개체 모델과 작업 창 및 사용자 지정 작업 창과 같은 기능에 액세스할 수도 있습니다.
생성된 클래스 이해
Excel 및 Word의 문서 수준 프로젝트에서, 생성된 클래스는 응용 프로그램의 개체 모델에 있는 최상위 개체와 유사합니다. 예를 들어 Word 문서 프로젝트의 생성된 ThisDocument 클래스에서는 Word 개체 모델의 Microsoft.Office.Interop.Word.Document 클래스와 동일한 멤버를 제공합니다. 문서 수준 프로젝트의 생성된 클래스에 대한 자세한 내용은 문서 수준 사용자 지정 프로그래밍을 참조하십시오.
응용 프로그램 수준 프로젝트는 ThisAddIn이라는 생성된 클래스를 제공합니다. 이 클래스는 호스트 응용 프로그램의 개체 모델에 있는 클래스와 유사하지 않습니다. 대신 이 클래스는 추가 기능 자체를 나타내며 호스트 응용 프로그램의 개체 모델과 추가 기능에 사용할 수 있는 다른 기능에 액세스하는 데 사용할 수 있는 멤버를 제공합니다. 자세한 내용은 응용 프로그램 수준 추가 기능 프로그래밍을 참조하십시오.
Office 프로젝트의 모든 생성된 클래스에는 Startup 및 Shutdown 이벤트 처리기가 포함됩니다. 코드 작성을 시작하려면 일반적으로 이러한 이벤트 처리기에 코드를 추가합니다. 추가 기능을 초기화하려면 Startup 이벤트 처리기에 코드를 추가합니다. 추가 기능에서 사용한 리소스를 해제하려면 Shutdown 이벤트 핸들러에 코드를 추가합니다. 자세한 내용은 Office 프로젝트의 이벤트를 참조하십시오.
런타임에 생성된 클래스 액세스
Office 솔루션이 로드되면 Microsoft Visual Studio Tools for Office Runtime에서 프로젝트의 각 생성된 클래스를 인스턴스화합니다. 프로젝트의 어느 코드에서나 Globals 클래스를 사용하여 이러한 개체에 액세스할 수 있습니다. 예를 들어 Globals 클래스를 사용하여 응용 프로그램 수준 추가 기능에 있는 리본 단추의 이벤트 처리기에서 ThisAddIn 클래스의 코드를 호출할 수 있습니다.
자세한 내용은 Office 프로젝트의 개체에 전역 액세스를 참조하십시오.
참고 항목
작업
방법: 주 Interop 어셈블리를 통한 Office 응용 프로그램 대상 선택
개념
Office 솔루션에서 Visual Basic과 Visual C#의 비교를 사용한 프로그래밍