다음을 통해 공유


문서 수준 사용자 지정 프로그래밍

문서 수준 사용자 지정을 사용하여 Microsoft Office Word 또는 Microsoft Office Excel을 확장할 때 다음 작업을 수행할 수 있습니다.

  • 개체 모델을 사용하여 응용 프로그램을 자동화할 수 있습니다.

  • 문서 화면에 컨트롤을 추가할 수 있습니다.

  • 사용자 지정 어셈블리에서 문서의 VBA(Visual Basic for Applications) 코드를 호출할 수 있습니다.

  • VBA에서 사용자 지정 어셈블리의 코드를 호출할 수 있습니다.

  • Microsoft Office가 설치되어 있지 않은 서버에 문서가 있을 때 문서의 일부 측면을 관리할 수 있습니다.

  • 응용 프로그램의 UI(사용자 인터페이스)를 사용자 지정할 수 있습니다.

적용 대상: 이 항목의 정보는 Excel 2013 및 Excel 2010, Word 2013 및 Word 2010의 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

문서 수준 프로젝트에는 Visual Studio의 다른 프로젝트 형식과 차이가 있는 코드 작성 측면이 몇 가지 있습니다.이러한 차이점은 대부분 Office 개체 모델이 관리 코드에 노출되는 방식 때문에 발생합니다.자세한 내용은 Office 솔루션에서 코드 작성을 참조하십시오.

문서 수준 사용자 지정과 Visual Studio의 Office 개발 도구를 사용하여 만들 수 있는 그 밖의 솔루션 형식에 대한 일반적인 내용은 Office 솔루션 개발 개요를 참조하십시오.

문서 수준 프로젝트의 생성된 클래스 사용

문서 수준 프로젝트를 만들면 프로젝트에 코드를 작성하는 데 사용할 수 있는 클래스가 자동으로 생성됩니다.Word 및 Excel에 대해 각기 다른 클래스가 생성됩니다.

  • Word용 문서 수준 프로젝트에서는 기본적으로 이 클래스를 ThisDocument라고 합니다.

  • Excel용 문서 수준 프로젝트에서는 통합 문서 자체에 대한 클래스와 각 워크시트에 대한 클래스가 별도로 생성되므로 여러 개의 클래스가 생성됩니다.기본적으로 이러한 클래스의 이름은 다음과 같습니다.

    • ThisWorkbook

    • Sheet1

    • Sheet2

    • Sheet3

생성된 클래스에는 문서가 열리거나 닫힐 때 호출되는 이벤트 처리기가 포함되어 있습니다.문서가 열릴 때 코드를 실행하려면 Startup 이벤트 처리기에 코드를 추가합니다.문서가 닫히기 직전에 코드를 실행하려면 Shutdown 이벤트 처리기에 코드를 추가합니다.자세한 내용은 Office 프로젝트의 이벤트을 참조하십시오.

Bb386206.collapse_all(ko-kr,VS.110).gif생성된 클래스의 디자인 이해

대상으로 하는 프로젝트의 .NET Framework 4 또는 .NET Framework 4.5, 호스트 항목 형식이 Microsoft Visual Studio Tools for Office Runtime 인터페이스 이므로 생성 된 클래스의 구현을 파생할 수 없습니다.대신, 생성된 클래스는 다음 기본 클래스에서 대부분의 멤버를 파생합니다.

이러한 기본 클래스는 멤버에 대한 모든 호출을 Microsoft Visual Studio Tools for Office Runtime에 있는 해당 호스트 항목 인터페이스의 내부 구현으로 리디렉션합니다.예를 들어, 호출 하는 경우는 Protect 메서드는 ThisDocument 클래스의 Microsoft.Office.Tools.Word.DocumentBase 클래스는이 호출의 내부 구현으로 리디렉션합니다는 Microsoft.Office.Tools.Word.Document 인터페이스의 Microsoft Visual Studio Tools for Office Runtime.

호스트 응용 프로그램 개체 모델에 액세스

호스트 응용 프로그램의 개체 모델에 액세스하려면 프로젝트에서 생성된 클래스의 멤버를 사용합니다.이러한 각 클래스는 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를 사용자 지정할 수 있습니다.

Microsoft Office 응용 프로그램의 UI 사용자 지정에 대한 자세한 내용은 Office UI 사용자 지정를 참조하십시오.

문서 수준 사용자 지정의 네이티브 Office 개체에서 확장 개체 가져오기

Office 이벤트에 대한 대부분의 이벤트 처리기에서는 이벤트가 발생한 통합 문서, 워크시트 또는 문서를 나타내는 네이티브 Office 개체를 받습니다.때로는 문서 수준 사용자 지정의 통합 문서 또는 문서에서 이벤트가 발생한 경우에만 코드를 실행하려는 경우도 있습니다.예를 들어 Excel용 문서 수준 사용자 지정에서 사용자가 사용자 지정된 통합 문서의 워크시트 중 하나를 활성화할 때만 코드를 실행하고 사용자가 동시에 열려 있는 다른 통합 문서의 워크시트를 활성화할 때는 코드를 실행하지 않을 수 있습니다.

네이티브 Office 개체가 있는 경우 해당 개체가 문서 수준 사용자 지정의 호스트 항목으로 확장되었는지 호스트 컨트롤로 확장되었는지를 테스트할 수 있습니다.호스트 항목과 호스트 컨트롤은 Microsoft Visual Studio Tools for Office Runtime에서 제공하는 형식으로, Word 또는 Excel 개체 모델에 기본적으로 포함된 개체(네이티브 Office 개체)에 기능을 추가합니다.통칭, 호스트 항목 및 호스트 컨트롤 라고도 하는 확장된 개체. 호스트 항목 및 호스트 컨트롤에 대 한 자세한 내용은 호스트 항목 및 호스트 컨트롤 개요.

GetVstoObject 및 HasVstoObject 메서드 이해

네이티브 Office 개체를 테스트하려면 프로젝트에서 HasVstoObjectGetVstoObject 메서드를 사용합니다.

문서 수준 프로젝트에서는 런타임에 GetVstoObject 메서드를 사용하여 새 Microsoft.Office.Tools.Excel.Workbook, Microsoft.Office.Tools.Excel.Worksheet 또는 Microsoft.Office.Tools.Word.Document 호스트 항목을 만들 수 없습니다.이 메서드는 디자인 타임에 프로젝트에 생성된 기존 호스트 항목에 액세스하려는 경우에만 사용할 수 있습니다.런타임에 새 호스트 항목을 만들려면 응용 프로그램 수준 프로젝트를 개발해야 합니다.자세한 내용은 호스트 항목 및 호스트 컨트롤의 프로그래밍에 대한 제한 사항런타임에 응용 프로그램 수준 추가 기능의 Word 문서 및 Excel 통합 문서 확장을 참조하십시오.

GetVstoObject 및 HasVstoObject 메서드 사용

호출 하는 HasVstoObjectGetVstoObject 메서드를 사용을 Globals.Factory.GetVstoObject 또는 Globals.Factory.HasVstoObject 메서드 및 네이티브 Word 또는 Excel 개체를 전달 (같은 Microsoft.Office.Interop.Word.Document 또는 Microsoft.Office.Interop.Excel.Worksheet) 테스트 하려는.

참고 항목

개념

ServerDocument 클래스를 사용하여 서버의 문서 관리

Office 솔루션에서 코드 작성

기타 리소스

Office 문서의 컨트롤

VBA 및 문서 수준 사용자 지정 결합