다음을 통해 공유


호스트 항목 및 호스트 컨트롤 개요

호스트 항목 및 호스트 컨트롤은 Visual Studio에서 Office 개발 도구를 사용하여 만든 Office 솔루션에 대한 프로그래밍 모델을 제공하는 데 도움이 되는 형식입니다. 호스트 항목 및 호스트 컨트롤은 Windows Forms 컨트롤과 같은 관리되는 개체와 상호 작용하는 것과 같이 COM을 기반으로 하는 Microsoft Office Word 및 Microsoft Office Excel의 개체 모델과 상호 작용합니다.

적용 대상: 이 항목의 정보는 Excel 및 Word용 문서 수준 프로젝트 및 VSTO 추가 기능 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 유형에서 사용할 수 있는 기능을 참조하세요.

호스트 항목

호스트 항목은 Office 프로젝트에서 개체 모델 계층 구조의 맨 위에 있는 형식입니다. Visual Studio Tools for Office 런타임은 Word 및 Excel 솔루션에 대해 다음 호스트 항목을 정의합니다.

  • Document

  • Workbook

  • Worksheet

  • ChartSheet

    이러한 각 형식은 Word 또는 Excel 개체 모델에 기본적으로 존재하는 개체, 즉 네이티브 Office 개체를 확장합니다. 예를 들어 Document 호스트 항목은 Word의 Document 기본 interop 어셈블리에 정의된 개체를 확장합니다.

    호스트 항목은 일반적으로 해당 Office 개체와 동일한 기본 기능을 갖지만 다음 기능으로 향상됩니다.

  • 호스트 컨트롤 및 Windows Forms 컨트롤을 포함하여 관리되는 컨트롤을 호스트하는 기능입니다.

  • 더 풍부한 이벤트 모델. 네이티브 Word 및 Excel 개체 모델의 일부 문서, 통합 문서 및 워크시트 이벤트는 애플리케이션 수준에서만 발생합니다. 호스트 항목은 문서 수준에서 이러한 이벤트를 제공하므로 특정 문서에 대한 이벤트를 더 쉽게 처리할 수 있습니다.

문서 수준 프로젝트의 호스트 항목 이해

문서 수준 프로젝트에서 호스트 항목은 코드의 진입점을 제공하며 솔루션을 개발하는 데 도움이 되는 디자이너가 있습니다.

DocumentWorksheet 호스트 항목에는 문서 또는 워크시트의 시각적 표현을 담당하는 연결된 디자이너가 있으며, 이는 Windows Forms 디자이너와 유사합니다. 이 디자이너를 사용하여 Word 또는 Excel에서 직접 문서나 워크시트의 내용을 수정하고 컨트롤을 디자인 화면으로 끌 수 있습니다. 자세한 내용은 문서 호스트 항목워크시트 호스트 항목을 참조하세요.

호스트 항목은 Workbook 사용자 인터페이스가 있는 컨트롤에 대한 컨테이너 역할을 하지 않습니다. 대신, 이 호스트 항목에 대한 디자이너는 구성 요소 트레이로 작동하며, 이를 통해 DataSet 같은 구성 요소를 디자인 화면으로 끌 수 있습니다. 자세한 내용은 통합 문서 호스트 항목을 참조하세요.

호스트 항목은 문서 수준 프로젝트에서 프로그래밍 방식으로 만들 수 없습니다. 대신 Design Time에 Visual Studio가 프로젝트 내에서 자동으로 생성하는 ThisDocument, ThisWorkbook, 또는 Sheetn 클래스를 사용합니다. 이러한 생성된 클래스는 호스트 항목에서 파생되며 코드의 진입점을 제공합니다. 자세한 내용은 호스트 항목 및 호스트 컨트롤의 프로그래밍 방식 제한 사항을 참조하세요.

VSTO 추가 기능 프로젝트의 호스트 항목 이해

VSTO 추가 기능을 만들 때는 기본적으로 호스트 항목에 액세스할 수 없습니다. 그러나 런타임에 Word 및 Excel VSTO 추가 기능에서 항목을 생성DocumentWorkbook하고 Worksheet 호스트할 수 있습니다.

호스트 항목을 생성한 후에는 문서에 컨트롤을 추가하는 등의 작업을 수행할 수 있습니다. 자세한 내용은 런타임에 VSTO 추가 기능에서 Word 문서 및 Excel 통합 문서 확장을 참조하세요.

호스트 컨트롤

호스트 컨트롤은 Word 및 Excel 개체 모델(예: Microsoft.Office.Interop.Word.ContentControlRange 개체)의 다양한 UI(사용자 인터페이스) 개체를 확장합니다.

Excel 프로젝트에 사용할 수 있는 호스트 컨트롤은 다음과 같습니다.

  • 차트 컨트롤

  • ListObject 컨트롤

  • NamedRange 컨트롤

  • XmlMappedRange 컨트롤

    Word 프로젝트에 사용할 수 있는 호스트 컨트롤은 다음과 같습니다.

  • 책갈피 컨트롤

  • 콘텐츠 컨트롤

  • XMLNode 컨트롤

  • XMLNodes 컨트롤

    Office 문서에 추가된 호스트 컨트롤은 네이티브 Office 개체처럼 동작합니다. 그러나 호스트 컨트롤에는 이벤트 및 데이터 바인딩 기능을 비롯한 추가 기능이 있습니다. 예를 들어 Excel에서 네이티브 Range 개체의 이벤트를 캡처하려면 먼저 워크시트의 변경 이벤트를 처리해야 합니다. 그런 다음 Range에서 변경이 발생했는지 여부를 확인해야 합니다. 반면 호스트 NamedRange 컨트롤에는 Change 직접 처리할 수 있는 이벤트가 있습니다.

    호스트 항목과 호스트 컨트롤 간의 관계는 Windows Form과 Windows Forms 컨트롤 간의 관계와 비슷합니다. Windows Form에 텍스트 상자 컨트롤을 배치하는 것처럼 호스트 항목에 컨트롤을 NamedRangeWorksheet 배치합니다. 다음 그림에서는 호스트 항목과 호스트 컨트롤 간의 관계를 보여 줍니다.

    호스트 항목과 호스트 컨트롤 간의 관계

    Word 및 Excel 문서 화면에 직접 추가하여 Office 솔루션에서 Windows Forms 컨트롤을 사용할 수도 있습니다. 자세한 내용은 Office 문서의 Windows Forms 컨트롤 개요를 참조하세요.

비고

호스트 컨트롤 또는 Windows Forms 컨트롤을 Word 하위 문서로 추가하는 것은 지원되지 않습니다.

문서에 호스트 컨트롤 추가

문서 수준 프로젝트에서는 디자인 타임에 다음과 같은 방법으로 Word 문서 또는 Excel 워크시트에 호스트 컨트롤을 추가할 수 있습니다.

호스트 컨트롤 이름 지정

도구 상자에서 문서로 호스트 컨트롤을 끌면 컨트롤의 이름이 자동으로 지정되고 끝에 증분 번호가 있는 컨트롤 형식이 지정됩니다. 예를 들어 책갈피의 이름은 bookmark1, bookmark2 등입니다. Word 또는 Excel의 네이티브 기능을 사용하여 컨트롤을 추가하는 경우 컨트롤을 만들 때 특정 이름을 지정할 수 있습니다. 속성 창에서 Name 속성 값을 변경하여 컨트롤의 이름을 바꿀 수도 있습니다.

비고

예약된 단어를 사용하여 호스트 컨트롤의 이름을 지정할 수 없습니다. 예를 들어 워크시트에 컨트롤을 NamedRange 추가하고 이름을 System으로 변경하면 프로젝트를 빌드할 때 오류가 발생합니다.

호스트 컨트롤 삭제

문서 수준 프로젝트에서는 Excel 워크시트 또는 Word 문서에서 컨트롤을 선택하고 Delete 키를 눌러 디자인 타임에 호스트 컨트롤을 삭제 할 수 있습니다. 그러나 컨트롤을 삭제 하려면 Excel의 NamedRange 대화 상자를 사용해야 합니다.

디자인 타임에 문서에 호스트 컨트롤을 추가하는 경우 다음에 코드에서 컨트롤을 사용하려고 할 때 예외가 throw되므로 런타임에 프로그래밍 방식으로 제거하면 안 됩니다. 호스트 컨트롤의 메서드는 Delete 런타임에 문서에 추가되는 호스트 컨트롤만 제거합니다. 디자인 타임에 생성된 호스트 컨트롤의 Delete 메서드를 호출하면 예외가 발생됩니다.

예를 들어, Delete 메서드는 NamedRange의 경우, 그 NamedRange가 동적으로 호스트 컨트롤을 만드는 것으로 알려진 방식으로 워크시트에 프로그래밍하여 추가된 경우에만 성공적으로 제거됩니다. 동적으로 생성된 호스트 컨트롤은 컨트롤 이름을 Controls 속성의 Remove 메서드 또는 Controls 속성에 전달하여 제거할 수도 있습니다. 자세한 내용은 런타임에 Office 문서에 컨트롤 추가를 참조하세요.

최종 사용자가 런타임에 문서에서 호스트 컨트롤을 삭제하면 솔루션이 예기치 않은 방식으로 실패할 수 있습니다. Word 및 Excel의 문서 보호 기능을 사용하여 호스트 컨트롤이 삭제되지 않도록 보호할 수 있습니다. 자세한 내용은 Office 개발 샘플 및 연습을 참조하세요.

비고

문서 또는 워크시트의 이벤트 처리기 중에 Shutdown 프로그래밍 방식으로 컨트롤을 제거하지 마세요. 이벤트가 발생할 때 Shutdown UI 요소를 더 이상 사용할 수 없습니다. 애플리케이션이 닫히기 전에 컨트롤을 제거하려면 코드를 다른 이벤트 처리기(예: BeforeClose 또는 BeforeSave.)에 추가합니다.

호스트 제어 이벤트에 대한 프로그램

호스트 컨트롤이 Office 개체를 확장하는 한 가지 방법은 이벤트를 추가하는 것입니다. 예를 들어 Range Excel의 개체와 Bookmark Word의 개체에는 이벤트가 없지만 Visual Studio Tools for Office 런타임은 프로그래밍 가능한 이벤트를 추가하여 이러한 개체를 확장합니다. Visual Basic의 이벤트 드롭다운 목록과 C#의 이벤트 속성 페이지를 통해 Windows Forms에서 컨트롤의 이벤트에 액세스하는 것과 동일한 방식으로 이러한 이벤트에 액세스하고 코딩할 수 있습니다. 자세한 내용은 단계별 과정: NamedRange 컨트롤의 이벤트에 대한 프로그래밍을 참조하세요.

비고

Excel에서 개체의 EnableEventsApplication 속성을 false로 설정하면 안 됩니다. 이 속성을 false 로 설정하면 호스트 컨트롤의 이벤트를 포함하여 Excel에서 이벤트를 발생시키는 것을 방지할 수 있습니다.