문서 수준 사용자 지정 프로그래밍
문서 수준 사용자 지정을 사용하여 Microsoft Office Word 또는 Microsoft Office Excel을 확장할 때 다음 작업을 수행할 수 있습니다.
개체 모델을 사용하여 응용 프로그램을 자동화할 수 있습니다.
문서 화면에 컨트롤을 추가할 수 있습니다.
사용자 지정 어셈블리에서 문서의 VBA(Visual Basic for Applications) 코드를 호출할 수 있습니다.
VBA에서 사용자 지정 어셈블리의 코드를 호출할 수 있습니다.
Microsoft Office가 설치되어 있지 않은 서버에 문서가 있을 때 문서의 일부 측면을 관리할 수 있습니다.
응용 프로그램의 UI(사용자 인터페이스)를 사용자 지정할 수 있습니다.
적용 대상: 이 항목의 정보는 Excel 2007 및 Excel 2010, Word 2007 및 Word 2010의 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
문서 수준 프로젝트에는 Visual Studio의 다른 프로젝트 형식과 차이가 있는 코드 작성 측면이 몇 가지 있습니다. 이러한 차이점은 대부분 Office 개체 모델이 관리 코드에 노출되는 방식 때문에 발생합니다. 자세한 내용은 Office 솔루션에서 코드 작성을 참조하십시오.
문서 수준 사용자 지정과 Visual Studio의 Office 개발 도구를 사용하여 만들 수 있는 그 밖의 솔루션 형식에 대한 일반적인 내용은 Office 솔루션 개발 개요를 참조하십시오.
문서 수준 프로젝트의 생성된 클래스 사용
문서 수준 프로젝트를 만들면 프로젝트에 코드를 작성하는 데 사용할 수 있는 클래스가 자동으로 생성됩니다. Word 및 Excel에 대해 각기 다른 클래스가 생성됩니다.
Word용 문서 수준 프로젝트에서는 기본적으로 이 클래스를 ThisDocument라고 합니다.
Excel용 문서 수준 프로젝트에서는 통합 문서 자체에 대한 클래스와 각 워크시트에 대한 클래스가 별도로 생성되므로 여러 개의 클래스가 생성됩니다. 기본적으로 이러한 클래스의 이름은 다음과 같습니다.
ThisWorkbook
Sheet1
Sheet2
Sheet3
생성된 클래스에는 문서가 열리거나 닫힐 때 호출되는 이벤트 처리기가 포함되어 있습니다. 문서가 열릴 때 코드를 실행하려면 Startup 이벤트 처리기에 코드를 추가합니다. 문서가 닫히기 직전에 코드를 실행하려면 Shutdown 이벤트 처리기에 코드를 추가합니다. 자세한 내용은 Office 프로젝트의 이벤트를 참조하십시오.
생성된 클래스의 디자인 이해
.NET Framework 3.5를 대상으로 하는 프로젝트에서는 생성된 클래스가 Microsoft Visual Studio Tools for Office Runtime의 다음 호스트 항목 클래스에서 대부분의 멤버와 동작을 파생합니다.
ThisDocument: Microsoft.Office.Tools.Word.Document에서 파생
ThisWorkbook: Microsoft.Office.Tools.Excel.Workbook에서 파생
Sheetn: Microsoft.Office.Tools.Excel.Worksheet에서 파생
호스트 항목은 Office 프로젝트의 개체 모델 계층 구조에서 맨 위에 있는 형식이며 PIA(주 interop 어셈블리)에 있는 해당 개체의 동작을 확장합니다. 호스트 항목에 대한 자세한 내용은 호스트 항목 및 호스트 컨트롤 개요를 참조하십시오.
.NET Framework 4를 대상으로 하는 프로젝트에서는 Microsoft Visual Studio Tools for Office Runtime의 호스트 항목 형식이 인터페이스이므로 생성된 클래스가 해당 클래스에서 구현을 파생할 수 없습니다. 대신, 생성된 클래스는 다음 기본 클래스에서 대부분의 멤버를 파생합니다.
ThisDocument: Microsoft.Office.Tools.Word.DocumentBase에서 파생
ThisWorkbook: Microsoft.Office.Tools.Excel.WorkbookBase에서 파생
Sheetn: Microsoft.Office.Tools.Excel.WorksheetBase에서 파생
이러한 기본 클래스는 멤버에 대한 모든 호출을 Microsoft Visual Studio Tools for Office Runtime에 있는 해당 호스트 항목 인터페이스의 내부 구현으로 리디렉션합니다. 예를 들어 ThisDocument 클래스의 Protect 메서드를 호출하는 경우 Microsoft.Office.Tools.Word.DocumentBase 클래스는 이 호출을 Microsoft Visual Studio Tools for Office Runtime에 있는 Microsoft.Office.Tools.Word.Document 인터페이스의 내부 구현으로 리디렉션합니다. Microsoft Visual Studio Tools for Office Runtime에서 .NET Framework 3.5 및 .NET Framework 4를 대상으로 하는 프로젝트의 차이점에 대한 자세한 내용은 Visual Studio Tools for Office 런타임 개요를 참조하십시오.
호스트 응용 프로그램 개체 모델에 액세스
호스트 응용 프로그램의 개체 모델에 액세스하려면 프로젝트에서 생성된 클래스의 멤버를 사용합니다. 이러한 각 클래스는 Excel 또는 Word의 개체 모델에 있는 개체에 해당하며, 동일한 속성, 메서드 및 이벤트를 대부분 포함합니다. 예를 들어 Word용 문서 수준 프로젝트의 ThisDocument 클래스에서는 Word 개체 모델의 Microsoft.Office.Interop.Word.Document 개체와 동일한 멤버를 대부분 제공합니다.
다음 코드 예제에서는 Word 개체 모델을 사용하여 Word용 문서 수준 사용자 지정의 일부인 문서를 저장하는 방법을 보여 줍니다. 이 예제는 ThisDocument 클래스에서 실행할 수 있습니다.
Me.Save()
this.Save();
ThisDocument 클래스 외부에서 동일한 작업을 수행하려면 Globals 개체를 사용하여 ThisDocument 클래스에 액세스합니다. 예를 들어 작업 창 UI에 저장 단추를 포함하려면 작업 창 코드 파일에 다음 코드를 추가합니다.
Globals.ThisDocument.Save()
Globals.ThisDocument.Save();
ThisDocument 클래스는 Microsoft.Office.Tools.Word.Document 호스트 항목에서 대부분의 멤버를 가져오므로 이 코드에서 호출되는 Save 메서드는 실제로는 Microsoft.Office.Tools.Word.Document 호스트 항목의 Save 메서드입니다. 이 메서드는 Word 개체 모델에 있는 Microsoft.Office.Interop.Word.Document 개체의 Save 메서드에 해당합니다.
Word 및 Excel의 개체 모델 사용에 대한 자세한 내용은 Word 개체 모델 개요 및 Excel 개체 모델 개요를 참조하십시오.
Globals 개체에 대한 자세한 내용은 Office 프로젝트의 개체에 전역 액세스를 참조하십시오.
문서에 컨트롤 추가
문서의 UI를 사용자 지정하려면 문서 화면에 Windows Forms 컨트롤이나 호스트 컨트롤을 추가합니다. 다양한 컨트롤 집합을 조합하고 코드를 작성하여 컨트롤을 데이터에 바인딩하고 사용자로부터 정보를 수집하고 사용자 작업에 응답할 수 있습니다.
호스트 컨트롤은 Word 및 Excel 개체 모델의 일부 개체를 확장하는 클래스입니다. 예를 들어 Microsoft.Office.Tools.Excel.ListObject 호스트 컨트롤에서는 Excel의 Microsoft.Office.Interop.Excel.ListObject 기능을 모두 제공합니다. 그러나 Microsoft.Office.Tools.Excel.ListObject 호스트 컨트롤에는 추가 이벤트 및 데이터 바인딩 기능도 있습니다.
자세한 내용은 호스트 항목 및 호스트 컨트롤 개요 및 Office 문서의 Windows Forms 컨트롤 개요를 참조하십시오.
VBA 및 문서 수준 사용자 지정 결합
문서 수준 사용자 지정의 일부인 문서에서 VBA 코드를 사용할 수 있습니다. 사용자 지정 어셈블리에서 문서의 VBA 코드를 호출할 수 있으며 문서의 VBA 코드에서 사용자 지정 어셈블리의 코드를 호출할 수 있도록 프로젝트를 구성할 수도 있습니다.
자세한 내용은 VBA 및 문서 수준 사용자 지정 결합을 참조하십시오.
서버에서 문서 관리
Microsoft Office Word 또는 Microsoft Office Excel이 설치되어 있지 않은 서버에서 문서 수준 사용자 지정의 다양한 측면을 관리할 수 있습니다. 예를 들어 문서의 데이터 캐시에 있는 데이터에 액세스하여 이를 수정할 수 있습니다. 문서와 연결된 사용자 지정 어셈블리를 관리할 수도 있습니다. 예를 들어 문서에서 코드가 더 이상 실행되지 않도록 문서에서 어셈블리를 프로그래밍 방식으로 제거하거나 문서에 어셈블리를 프로그래밍 방식으로 연결할 수 있습니다.
자세한 내용은 ServerDocument 클래스를 사용하여 서버의 문서 관리를 참조하십시오.
Microsoft Office 응용 프로그램의 사용자 인터페이스 사용자 지정
문서 수준 사용자 지정을 사용하여 다음 방법으로 Word 및 Excel의 UI를 사용자 지정할 수 있습니다.
문서 화면에 호스트 컨트롤 또는 Windows Forms 컨트롤 추가
자세한 내용은 확장된 개체를 사용하여 Word 자동화, 확장된 개체를 사용하여 Excel 자동화 및 Office 문서의 Windows Forms 컨트롤 개요을 참조하십시오.
문서에 작업 창 추가
자세한 내용은 작업 창 개요를 참조하십시오.
문서에 스마트 태그 추가
참고
Excel 2010 및 Word 2010에서 스마트 태그는 더 이상 사용되지 않습니다. 자세한 내용은 스마트 태그 개요를 참조하십시오.
자세한 내용은 스마트 태그 개요를 참조하십시오.
리본 메뉴에 사용자 지정 탭 추가
자세한 내용은 리본 개요을 참조하십시오.
리본 메뉴의 기본 제공 탭에 사용자 지정 그룹 추가
자세한 내용은 방법: 기본 제공 탭 사용자 지정을 참조하십시오.
Microsoft Office 응용 프로그램의 UI 사용자 지정에 대한 자세한 내용은 Office UI 사용자 지정를 참조하십시오.
참고 항목
개념
ServerDocument 클래스를 사용하여 서버의 문서 관리
문서 수준 사용자 지정의 네이티브 Office 개체에서 확장 개체 가져오기