요구사항: Word의 중국어 문자 길이 플러그인과 같은 간단한 플러그인을 위해 VSTO를 사용하세요.
단어 객체 모델
워드는 상호작용할 수 있는 수백 개의 객체를 제공합니다. 이 객체들은 사용자 인터페이스를 엄격히 따르는 계층 구조로 조직되어 있습니다. Application 객체는 계층 구조의 맨 위에 있습니다. 이 객체는 현재 워드의 인스턴스를 나타냅니다. 애플리케이션 객체는 문서, 선택, 북마크, 범위 객체를 포함합니다. 각 객체는 객체를 조작하고 상호작용할 수 있는 여러 방법과 속성을 가지고 있습니다.
다음 이미지는 Word 객체 모델 계층 구조에서 이 객체들의 모습을 보여줍니다.
문서조사:하이퍼링크 로그인이 보입니다.
애플리케이션 객체
애플리케이션 객체는 워드 애플리케이션을 나타내며 다른 모든 객체의 부모 객체입니다. 그 구성원들은 보통 Word 전체에 적용됩니다. 그 특성과 메서드를 이용해 워드 환경을 제어할 수 있습니다.
VSTO 애드인 프로젝트에서는 애플리케이션 클래스의 Application 필드를 사용하여 ThisAddIn 객체에 접근할 수 있습니다.
문서 수준 프로젝트에서는 애플리케이션 클래스의 Application 속성을 사용하여 ThisDocument 객체에 접근할 수 있습니다.
문서 객체
문서 객체는 워드 프로그래밍의 중심입니다. 문서와 그 모든 내용을 나타냅니다. 문서를 열거나 새 문서를 만들면, 새로운 문서 객체가 생성되어 문서 객체의 애플리케이션 컬렉션에 추가됩니다. 초점이 있는 문서를 활성 문서라고 합니다. 이는 ActiveDocument 객체의 Application 속성으로 표현됩니다.
문서 수준 프로젝트를 생성할 때, 프로젝트에서 생성된 Document 클래스를 사용하여 ThisDocument 멤버에 접근할 수 있습니다. ThisDocument 객체는 문서 클래스 내 코드에 Me 또는 이 키워드를 사용하거나, ThisDocument 클래스 외부의 코드로 Globals.ThisDocument 코드를 사용해 접근할 수 있습니다.
선택 객체
선택 객체는 현재 선택된 영역을 나타냅니다. Word 사용자 인터페이스에서 굵은 글과 같은 동작을 수행할 때, 텍스트를 선택하거나 하이라이트한 후 서식을 적용할 수 있습니다. 선택 객체는 항상 문서에 존재합니다. 아무것도 체크하지 않으면 삽입 지점을 나타냅니다. 또한, 선택된 콘텐츠에는 인접하지 않은 여러 텍스트 블록이 포함될 수 있습니다.
범위 객체
범위 객체는 문서 내 인접 영역을 나타내며, 시작과 끝 문자 위치로 정의됩니다. 단일 범위 오브젝트에만 국한되지 않습니다. 같은 문서에서 여러 Range 객체를 정의할 수 있습니다. 범위 객체는 다음과 같은 특성을 가집니다:
- 개별 삽입 지점만 포함할 수도 있고, 텍스트 범위 또는 문서 전체를 포함할 수도 있습니다.
- 공백, 탭, 단락 표시 같은 인쇄되지 않은 문자도 포함되어 있습니다.
- 현재 선택된 콘텐츠가 나타내는 영역일 수도 있고, 이 콘텐츠와 다른 영역일 수도 있습니다.
- 선택한 내용과 달리 문서에는 보이지 않습니다.
- 문서와 함께 저장되지 않으며, 코드가 실행 중일 때만 존재합니다.
- 텍스트가 범위 끝에 삽입되면, Word는 자동으로 삽입된 텍스트를 포함하도록 범위를 확장합니다.
콘텐츠 제어 객체 (콘텐츠 제어 객체)
ContentControl은 워드 문서 내 텍스트 및 기타 유형의 콘텐츠의 입력과 렌더링을 제어하는 방법을 제공합니다. ContentControl은 다중 메시지 텍스트 제어, 날짜 선택기, 콤보 박스 등 워드 문서에 최적화된 다양한 UI를 표시할 수 있습니다. 또한 ContentControl을 사용해 사용자가 문서나 템플릿의 특정 섹션을 편집하지 못하도록 막을 수도 있습니다.
Visual Studio는 ContentControl 객체를 여러 호스트 컨트롤로 확장합니다. ContentControl 객체는 콘텐츠 컨트롤에 사용할 수 있는 다양한 유형의 UI를 모두 보여주지만, Visual Studio는 각 콘텐츠 컨트롤마다 다른 유형의 UI를 제공합니다. 예를 들어, RichTextContentControl을 사용해 다중 메시지 텍스트 컨트롤을 만들거나, DatePickerContentControl을 사용해 날짜 선택기를 만들 수 있습니다. 이 호스트 컨트롤은 네이티브 ContentControls와 유사하게 동작하지만, 추가적인 이벤트 및 데이터 바인딩 기능도 갖추고 있습니다.
북마크 객체
북마크 객체는 문서 내에서 시작과 종료 위치를 모두 가진 인접한 영역을 나타냅니다. 북마크를 사용해 문서 내 위치를 표시하거나 중국어 버전의 문서를 위한 컨테이너로 사용할 수 있습니다. 북마크 객체는 삽입 지점을 포함할 수도 있고, 문서 전체만큼 클 수도 있습니다. 북마크는 범위 객체와 구별되는 다음과 같은 특징을 가지고 있습니다:
- 디자인할 때 책갈피에 이름을 붙일 수 있습니다.
- 북마크 객체는 문서와 함께 저장되므로 코드가 실행을 멈추거나 문서가 닫혀도 삭제되지 않습니다.
- View 속성을 false 또는 true로 설정하여 View 속성에 접근하세요.
- Visual Studio는 북마크 호스트 제어를 제공하여 북마크 객체를 확장합니다. 북마크 호스트 컨트롤은 네이티브 북마크와 유사하게 동작하지만, 추가적인 이벤트 및 데이터 바인딩 기능도 갖추고 있습니다. 문서의 북마크 컨트롤에 데이터를 바인딩하는 방식은 Windows 폼의 텍스트 박스 컨트롤과 같은 방식으로 사용할 수 있습니다.
Word VSTO 애드인 생성
기본 개념을 이해한 후에는 아래 그림과 같이 새로운 Word VSTO 애드인을 생성하기 위해 VS 2022를 열어 작성하세요:
아래 그림에 보이는 시각적 리본을 만드세요:
Ribbon1.cs 더블 클릭으로 열고, 기본 탭을 제거한 뒤 아래 표시와 같이 새 탭을 드래그하세요:
아래 표시와 같이 그룹과 버튼 컨트롤을 새 탭으로 드래그하세요:
다음 코드로 새로 생성된 버튼 버튼을 더블 클릭하여 클릭 이벤트를 생성하세요:
(끝)
|