호스트 항목 및 호스트 컨트롤 개요
호스트 항목과 호스트 컨트롤은 Visual Studio의 Office 개발 도구를 사용하여 만드는 Office 솔루션의 프로그래밍 모델을 제공해 주는 형식입니다. 호스트 항목과 호스트 컨트롤은 Windows Forms 컨트롤 등의 관리되는 개체와 상호 작용하는 것과 같은 방식으로 COM 기반의 Microsoft Office Word 및 Microsoft Office Excel 개체 모델과 상호 작용합니다.
적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010, Word 2007 및 Word 2010의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
호스트 항목
호스트 항목은 Office 프로젝트의 개체 모델 계층 구조에서 맨 위에 있는 형식입니다. Microsoft Visual Studio Tools for Office Runtime에서는 Word 및 Excel 솔루션에 대한 다음 호스트 항목을 정의합니다.
이러한 각 형식은 Word 또는 Excel 개체 모델에 기본적으로 있는 개체(네이티브 Office 개체라고 함)를 확장합니다. 예를 들어 Microsoft.Office.Tools.Word.Document 호스트 항목은 Word의 주 interop 어셈블리에 정의된 Microsoft.Office.Interop.Word.Document 개체를 확장합니다.
호스트 항목에는 일반적으로 해당하는 Office 개체와 동일한 기본 기능뿐 아니라 다음과 같은 향상된 기능도 있습니다.
호스트 컨트롤 및 Windows Forms 컨트롤을 포함한 관리되는 컨트롤을 호스팅할 수 있습니다.
보다 풍부한 이벤트 모델을 제공합니다. 네이티브 Word 및 Excel 개체 모델의 일부 문서, 통합 문서 및 워크시트 이벤트는 응용 프로그램 수준에서만 발생합니다. 호스트 항목은 특정 문서에 대한 이벤트를 보다 쉽게 처리할 수 있도록 문서 수준에서 이러한 이벤트를 제공합니다.
문서 수준 프로젝트의 호스트 항목 이해
문서 수준 프로젝트에서 호스트 항목은 코드의 진입점을 제공하며 솔루션을 개발하는 데 사용할 수 있는 별도의 디자이너가 있습니다.
Microsoft.Office.Tools.Word.Document 및 Microsoft.Office.Tools.Excel.Worksheet 호스트 항목에는 Windows Forms 디자이너와 같이 문서나 워크시트를 시각적으로 표시하는 관련 디자이너가 있습니다. 이 디자이너를 사용하여 Word 또는 Excel에서 직접 문서나 워크시트의 내용을 수정하고 컨트롤을 디자인 화면으로 끌어 올 수 있습니다. 자세한 내용은 문서 호스트 항목 및 워크시트 호스트 항목을 참조하십시오.
Microsoft.Office.Tools.Excel.Workbook 호스트 항목은 사용자 인터페이스가 있는 컨트롤의 컨테이너로 사용되지 않습니다. 대신 이 호스트 항목의 디자이너는 DataSet 등의 구성 요소를 디자인 화면으로 끌어 놓을 수 있게 해 주는 구성 요소 트레이 기능을 수행합니다. 자세한 내용은 통합 문서 호스트 항목을 참조하십시오.
문서 수준 프로젝트에서는 호스트 항목을 프로그래밍 방식으로 만들 수 없습니다. 대신 디자인 타임에 프로젝트에 자동으로 생성되는 ThisDocument, ThisWorkbook 또는 Sheetn 클래스를 사용합니다. 이렇게 생성되는 클래스는 호스트 항목에서 파생되며 코드에 대한 진입점을 제공합니다. 자세한 내용은 호스트 항목 및 호스트 컨트롤의 프로그래밍에 대한 제한 사항을 참조하십시오.
응용 프로그램 수준 프로젝트의 호스트 항목 이해
응용 프로그램 수준 추가 기능을 만들 때는 기본적으로 호스트 항목에 액세스할 수 없습니다. 그러나 런타임에 Word 및 Excel 추가 기능에서 Microsoft.Office.Tools.Word.Document, Microsoft.Office.Tools.Excel.Workbook 및 Microsoft.Office.Tools.Excel.Worksheet 호스트 항목을 생성할 수 있습니다.
호스트 항목을 생성한 후에는 문서에 컨트롤을 추가하거나 특정 문서에서 인식되는 스마트 태그를 만드는 등의 작업을 수행할 수 있습니다. 자세한 내용은 런타임에 응용 프로그램 수준 추가 기능의 Word 문서 및 Excel 통합 문서 확장을 참조하십시오.
참고
Excel 2010 및 Word 2010에서 스마트 태그는 더 이상 사용되지 않습니다. 자세한 내용은 스마트 태그 개요를 참조하십시오.
호스트 컨트롤
호스트 컨트롤은 Word 및 Excel 개체 모델에 있는 Microsoft.Office.Interop.Word.ContentControl 및 Microsoft.Office.Interop.Excel.Range 개체 등의 다양한 UI(사용자 인터페이스)를 확장합니다.
Excel 프로젝트에 사용할 수 있는 컨트롤은 다음과 같습니다.
Word 프로젝트에 사용할 수 있는 컨트롤은 다음과 같습니다.
Office 문서에 추가된 호스트 컨트롤은 네이티브 Office 개체처럼 작동하지만 호스트 컨트롤에는 이벤트와 데이터 바인딩 기능을 비롯한 추가 기능이 있습니다. 예를 들어 Excel에서 네이티브 Microsoft.Office.Interop.Excel.Range 개체의 이벤트를 캡처하려면 먼저 워크시트의 변경 이벤트를 처리해야 합니다. 그런 다음 변경이 Microsoft.Office.Interop.Excel.Range 내에서 발생했는지 확인해야 합니다. 반면, Microsoft.Office.Tools.Excel.NamedRange 호스트 컨트롤에는 직접 처리할 수 있는 Change 이벤트가 있습니다.
호스트 항목과 호스트 컨트롤 사이의 관계는 Windows Form과 Windows Forms 컨트롤 사이의 관계와 매우 비슷합니다. Windows Form에 텍스트 상자 컨트롤을 배치하듯이 Microsoft.Office.Tools.Excel.NamedRange 컨트롤을 Microsoft.Office.Tools.Excel.Worksheet 호스트 항목에 배치할 수 있습니다. 다음 그림에서는 호스트 항목과 호스트 컨트롤 사이의 관계를 보여 줍니다.
또한 Windows Forms 컨트롤을 Word 및 Excel 문서 화면에 직접 추가하여 이러한 컨트롤을 Office 솔루션에서 사용할 수 있습니다. 자세한 내용은 Office 문서의 Windows Forms 컨트롤 개요를 참조하십시오.
참고
Word 하위 문서에 호스트 컨트롤 또는 Windows Forms 컨트롤을 추가하는 기능은 지원되지 않습니다.
문서에 호스트 컨트롤 추가
문서 수준 프로젝트에서는 디자인 타임에 다음 방법으로 Word 문서나 Excel 워크시트에 호스트 컨트롤을 추가할 수 있습니다.
네이티브 개체를 추가하는 것과 동일한 방식으로 디자인 타임에 문서에 호스트 컨트롤을 추가합니다.
도구 상자의 호스트 컨트롤을 문서나 워크시트로 끌어 놓습니다. Excel 호스트 컨트롤은 Excel 프로젝트의 Excel 컨트롤 탭에서 사용할 수 있고, Word 호스트 컨트롤은 Word 프로젝트의 Word 컨트롤 탭에서 사용할 수 있습니다.
데이터 소스 창에서 문서나 워크시트로 호스트 컨트롤을 끌어 놓습니다. 이렇게 하면 이미 데이터에 바인딩된 컨트롤을 추가할 수 있습니다. 자세한 내용은 Office 솔루션의 컨트롤에 데이터 바인딩을 참조하십시오.
문서 수준 프로젝트와 응용 프로그램 수준 프로젝트에서 런타임에 일부 호스트 컨트롤을 문서에 추가할 수도 있습니다. 자세한 내용은 런타임에 Office 문서에 컨트롤 추가를 참조하십시오.
문서에 호스트 컨트롤을 추가하는 방법에 대한 자세한 내용은 다음 항목을 참조하십시오.
호스트 컨트롤 명명
도구 상자의 호스트 컨트롤을 문서로 끌어 놓으면 컨트롤 형식을 나타내는 이름 뒤에 1씩 증가하는 번호가 추가된 컨트롤 이름이 자동으로 지정됩니다. 예를 들어 책갈피에는 bookmark1, bookmark2 등의 이름이 지정됩니다. Word 또는 Excel 본래의 기능을 사용하여 컨트롤을 추가하는 경우 컨트롤을 만들 때 특정 이름을 지정할 수 있습니다. 속성 창에서 Name 속성의 값을 변경하여 컨트롤의 이름을 바꿀 수도 있습니다.
참고
예약어는 호스트 컨트롤의 이름에 사용할 수 없습니다. 예를 들어, NamedRange 컨트롤을 워크시트에 추가하고 이름을 System으로 변경하면 프로젝트를 빌드할 때 오류가 발생합니다.
호스트 컨트롤 삭제
문서 수준 프로젝트에서는 Excel 워크시트나 Word 문서에서 컨트롤을 선택하고 Delete 키를 눌러 디자인 타임에 호스트 컨트롤을 삭제할 수 있습니다. 이 경우 Excel의 이름 정의 대화 상자를 사용하여 NamedRange 컨트롤을 삭제해야 합니다. 자세한 내용은 How to: Delete NamedRange Controls at Design Time를 참조하십시오.
디자인 타임에 호스트 컨트롤을 문서에 추가하는 경우 이후에 코드를 통해 컨트롤을 사용하려 할 때 예외가 throw되므로 런타임에 프로그래밍 방식으로 컨트롤을 제거해야 합니다. 호스트 컨트롤의 Delete 메서드는 런타임에 문서에 추가된 호스트 컨트롤만 제거합니다. 디자인 타임에 만든 호스트 컨트롤의 Delete 메서드를 호출하면 예외가 throw됩니다.
예를 들어 NamedRange의 Delete 메서드는 동적 호스트 컨트롤 만들기라는 방법으로 워크시트에 프로그래밍 방식으로 추가된 NamedRange만 성공적으로 삭제합니다. Worksheet.Controls 또는 Document.Controls 속성의 Remove 메서드에 컨트롤 이름을 전달하면 동적으로 만들어진 호스트 컨트롤을 제거할 수도 있습니다. 자세한 내용은 런타임에 Office 문서에 컨트롤 추가를 참조하십시오.
최종 사용자가 런타임에 문서에서 호스트 컨트롤을 삭제하는 경우 솔루션이 예기치 않게 실패할 수 있습니다. Word 및 Excel의 문서 보호 기능을 사용하여 호스트 컨트롤이 삭제되지 않게 할 수 있습니다. 자세한 내용은 Office 개발 샘플 및 연습을 참조하십시오.
참고
문서 또는 워크시트의 Shutdown 이벤트 처리기에서 컨트롤을 프로그래밍 방식으로 제거하지 마십시오. Shutdown 이벤트가 발생할 경우 UI 요소를 더 이상 사용할 수 없습니다. 응용 프로그램을 닫기 전에 컨트롤을 제거하려면 사용자 코드를 BeforeClose 또는 BeforeSave와 같은 다른 이벤트 처리기에 추가합니다.
호스트 컨트롤 이벤트 프로그래밍
호스트 컨트롤에서 Office 개체를 확장하는 방법 중 하나는 이벤트를 추가하는 것입니다. 예를 들어 Excel의 Microsoft.Office.Interop.Excel.Range 개체와 Word의 Microsoft.Office.Interop.Word.Bookmark 개체에는 이벤트가 없지만 Microsoft Visual Studio Tools for Office Runtime에서 프로그래밍 가능한 이벤트를 추가하여 이러한 개체를 확장할 수 있습니다. Windows Forms에서 컨트롤의 이벤트에 액세스할 때와 동일한 방식으로 이러한 이벤트에 액세스하여 필요한 내용을 코딩할 수 있습니다. 즉, Visual Basic에서는 이벤트 드롭다운 목록을 사용하고 C#의 경우에는 이벤트 속성 페이지를 사용합니다. 자세한 내용은 연습: NamedRange 컨트롤의 이벤트 프로그래밍을 참조하십시오.
참고
Excel에서 Application 개체의 EnableEvents 속성을 false로 설정하지 마십시오. 이 속성을 false로 설정하면 Excel에서 호스트 컨트롤 이벤트를 비롯한 모든 이벤트가 발생하지 않습니다.
참고 항목
개념
호스트 항목 및 호스트 컨트롤의 프로그래밍에 대한 제한 사항