Word 对象模型概述

在 Visual Studio 中开发 Word 解决方案时,会与 Word 对象模型进行交互。 此对象模型包含 Word 的主互操作程序集中所提供的类和接口,并在 Microsoft.Office.Interop.Word 命名空间中进行定义。

适用于: 本主题中的信息适用于 Word 的文档级项目和 VSTO 外接程序项目。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。

本主题概要介绍 Word 对象模型。 有关可以了解有关整个 Word 对象模型的详细信息的资源,请参阅 “使用 Word 对象模型”文档

有关使用 Word 对象模型执行特定任务的信息,请参阅下列主题:

了解 Word 对象模型

Word 提供了数百个可与之交互的对象。 这些对象采用严格遵循用户界面的层次结构进行组织。 Application 对象位于层次结构的顶部。 此对象表示 Word 的当前实例。 Application 对象包含 DocumentSelectionBookmarkRange 对象。 上述每个对象均具有很多方法和属性,可用于操作对象和与之进行交互。

下图显示了 Word 对象模型层次结构中这些对象的一个视图。

Word Object Model graphic

初看起来,对象似乎重叠在一起。 例如, DocumentSelection 对象都是 Application 对象的成员,但 Document 对象也是 Selection 对象的成员。 DocumentSelection 对象都包含 BookmarkRange 对象。 因为有多种方法可以访问相同类型的对象,所以存在重叠。 例如,你将格式设置应用于 Range 对象;但你可能想要访问当前选定内容、某一特定段落,某一节或整个文档的范围。

下列各节简要介绍了顶级对象以及它们彼此交互的方式。 这些对象包括下列五种:

  • 应用程序对象

  • 文档对象

  • Selection 对象

  • Range 对象

  • Bookmark 对象

    除 Word 对象模型以外,Visual Studio 中的 Office 项目还提供可扩展 Word 对象模型中的一些对象的 主机项主机控件 。 主机项和主机控件的行为类似于它们扩展的 Word 对象,但它们还具有其他功能(如数据绑定功能)和额外事件。 有关详细信息,请参阅 使用扩展对象 和主机项和 主机控件概述自动执行 Word。

应用程序对象

Application 对象表示 Word 应用程序,并且是所有其他对象的父级。 其成员通常作为一个整体应用于 Word。 你可以使用其属性和方法来控制 Word 环境。

在 VSTO 外接程序项目中,可以通过使用 Application 类的 Application 字段来访问 ThisAddIn 对象。 有关详细信息,请参阅 程序 VSTO 外接程序

在文档级项目中,可以通过使用 Application 类的 Application 属性来访问 ThisDocument 对象。

文档对象

Document 对象是 Word 编程的中心。 它表示一个文档及其所有内容。 当你打开文档或创建新文档时,将创建新的 Document 对象,并将其添加到 Documents 对象的 Application 集合。 具有焦点的文档被称为活动文档。 它由 ActiveDocument 对象的 Application 属性表示。

Visual Studio 中的 Office 开发工具通过提供 Document 类型来扩展 Document 对象。 此类型是一个 主机项 ,使你可以访问 Document 对象的所有功能,并增添了其他事件以及添加托管控件的能力。

在创建文档级项目时,可以通过使用项目中生成的 Document 类访问 ThisDocument 成员。 通过使用 Document 类中代码的 Methis 关键字、或通过使用 ThisDocument 类外部的代码的 Globals.ThisDocument ,即可访问 ThisDocument 对象。 有关详细信息,请参阅 程序文档级自定义。 例如,若要在文档中选择第一个段落,请使用下列代码。

this.Paragraphs[1].Range.Select();

在 VSTO 外接程序项目中,可以在运行时生成 Document 主机项。 可以使用生成的主机项将控件添加到关联文档。 有关详细信息,请参阅 运行时在 VSTO 外接程序中扩展 Word 文档和 Excel 工作簿。

Selection 对象

Selection 对象表示当前所选的区域。 在 Word 用户界面中执行操作(如文本加粗)时,可以选择或突出显示文本,然后应用格式设置。 文档中始终存在 Selection 对象。 如果未选中任何内容,则它表示插入点。 此外,选定内容可包含多个不相邻的文本块。

Range 对象

Range 对象表示文档中的相邻区域,并由起始字符位置和结束字符位置进行定义。 并不仅限于单个 Range 对象。 你可以在同一文档中定义多个 Range 对象。 Range 对象具有以下特性:

  • 它可以只包含单独的插入点,也可包含一个文本范围或整个文档。

  • 它包括非打印字符,如空格、制表符和段落标记。

  • 它可以是当前选定内容所表示的区域,也可以表示不同于此内容的区域。

  • 它在文档中不可见,这与选定内容不同,后者总是可见。

  • 它不随文档一起保存,且仅在代码运行时才存在。

    当在某个范围的末尾插入文本时,Word 会自动扩展该范围以包括插入的文本。

内容控件对象

ContentControl 提供一种用于控制 Word 文档内文本和其他类型的内容的输入和呈现的方法。 ContentControl 可以显示多种不同类型的 UI,它们进行了优化以在 Word 文档中使用,如多信息文本控件、日期选取器或组合框。 你还可以使用 ContentControl 来防止用户编辑文档或模板的某些节。

Visual Studio 会将 ContentControl 对象扩展到几个不同的主机控件。 虽然 ContentControl 对象能显示可用于内容控件的所有不同类型的 UI,Visual Studio 还是为每个内容控件提供了一个不同的类型。 例如,你可以使用 RichTextContentControl 来创建多信息文本控件,或者可以使用 DatePickerContentControl 来创建日期选取器。 这些主机控件的行为与本机 ContentControl的类似,但它们还具有其他事件和数据绑定功能。 有关详细信息,请参阅 内容控件

Bookmark 对象

Bookmark 对象表示文档中的相邻区域,同时具有起始位置和结束位置。 你可以使用书签标记文档中的某个位置,也可将其作为文档中文本的容器。 Bookmark 对象可以包含插入点,也可以与整个文档一样大。 Bookmark 具有下列特征,以将其与 Range 对象区别开来:

  • 你可以在设计时命名书签。

  • Bookmark 对象随文档一起保存,因此在代码停止运行或文档关闭时不会被删除。

  • 通过将 ShowBookmarks 属性来访问 View 属性设置为 falsetrue

    Visual Studio 通过提供 Bookmark 主机控件来扩展 Bookmark 对象。 Bookmark 主机控件的行为与本机 Bookmark的类似,但它们还具有其他事件和数据绑定功能。 你可以将数据绑定到文档上的书签控件,操作方式与将数据绑定到 Windows 窗体上文本框控件的方式相同。 有关详细信息,请参阅 书签控件

使用 Word 对象模型文档

有关 Word 对象模型的完整信息,可以参考 Word 主互操作程序集 (PIA) 引用和 Visual Basic for Applications (VBA) 对象模型引用。

主互操作程序集引用

Word PIA 参考文档介绍了 Word 的主互操作程序集中的类型。 本文档可从以下位置获取: Word 2010 主互操作程序集参考

有关 Word PIA 设计的详细信息,例如 PIA 中的类和接口之间的差异以及如何实现 PIA 中的事件,请参阅办公室主互操作程序集中的类和接口概述。

VBA 对象模型参考

VBA 对象模型引用在将 Word 对象模型公开到 VBA 代码时对该对象进行了记录。 有关详细信息,请参阅 Word 2010 对象模型参考

VBA 对象模型引用中的所有对象和成员都与 Word PIA 中的类型和成员相对应。 例如,VBA 对象模型引用中的 Document 对象对应于 Document Word PIA 中的对象。 虽然 VBA 对象模型引用提供了大多数属性、方法和事件的代码示例,但如果要在用 Visual Studio 创建的 Word 项目中使用本引用中的 VBA 代码,必须将其转换为 Visual Basic 或 Visual C# 代码。