Word 对象模型概述
在 Visual Studio 中开发 Word 解决方案时,可与 Word 对象模型交互。此对象模型由 Word 的主互操作程序集中提供的类和接口组成,并且在 Microsoft.Office.Interop.Word 命名空间中定义。
**适用于:**本主题中的信息适用于 Word 2013 和 Word 2010 的文档级项目和应用程序级项目。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能。
本主题简要概述了 Word 对象模型。有关可供了解整个 Word 对象模型更多相关信息的资源,请参见使用 Word 对象模型文档。
有关使用 Word 对象模型执行特定任务的信息,请参见以下主题:
了解 Word 对象模型
Word 提供了数百个您可与之交互的对象。这些对象排列在一个与用户界面密切相关的层次结构中。层次结构顶部的对象是 Application 对象。此对象表示 Word 的当前实例。Application 对象包含 Document、Selection、Bookmark 和 Range 对象。每个对象的可操作和交互的访问的对象的很多方法和属性。
下图显示了 Word 对象模型层次结构中这些对象的一个视图。
Word 对象模型抽象图
乍看上去,对象会出现重叠。例如,Document 和 Selection 对象都是 Application 对象的成员,但是 Document 对象还是 Selection 对象的成员。Document 和 Selection 对象都包含 Bookmark 和 Range 对象。存在重叠是因为您可以通过多种方式来访问相同类型的对象。例如,您将格式设置应用于 Range 对象;但您可能希望访问当前选定内容、特定段落、小节或整个文档的范围。
以下各部分简要描述顶级对象以及它们彼此之间如何进行交互。这些对象包括以下五种:
Application 对象
Document 对象
Selection 对象
Range 对象
Bookmark 对象
除 Word 对象模型外,Visual Studio 中的 Office 项目还提供宿主项和宿主控件以扩展 Word 对象模型中的一些对象。宿主项和宿主控件的行为类似于它们扩展的 Word 对象,但它们还具有其他功能,如数据绑定功能和额外事件。有关更多信息,请参见使用扩展对象实现 Word 自动化和宿主项和宿主控件概述。
Application 对象
Application 对象表示 Word 应用程序,是其他所有对象的父级。它的所有成员通常作为一个整体应用于 Word。可以使用该对象的属性和方法来控制 Word 环境。
在应用程序级外接程序项目中,您可以使用 ThisAddIn 类的 Application 字段访问 Application 对象。有关更多信息,请参见应用程序级外接程序编程。
在文档级项目中,您可以使用 ThisDocument 类的 Application 属性访问 Application 对象。
Document 对象
Microsoft.Office.Interop.Word.Document 对象是 Word 编程的中枢。它表示文档及其所有内容。当您打开文档或创建新文档时,就创建了新的 Microsoft.Office.Interop.Word.Document 对象,该对象被添加到 Application 对象的 Documents 集合中。具有焦点的文档称为活动文档。它由 Application 对象的 ActiveDocument 属性表示。
Visual Studio 中的 Office 开发工具通过提供 Microsoft.Office.Tools.Word.Document 类型来扩展 Microsoft.Office.Interop.Word.Document 对象。此类型是宿主项,利用它可以访问 Microsoft.Office.Interop.Word.Document 对象的所有功能,并添加其他事件以及用于添加托管控件的功能。
创建文档级项目时,可以通过在项目中使用生成的 ThisDocument 类来访问 Microsoft.Office.Tools.Word.Document 成员。您可以从 ThisDocument 类中的代码中使用 Me 或 this 关键字或者从 ThisDocument 类外部的代码中使用 Globals.ThisDocument 来访问 Microsoft.Office.Tools.Word.Document 宿主项的成员。有关更多信息,请参见对文档级自定义项进行编程。例如,若要选择文档中的第一个段落,请使用下面的代码。
Me.Paragraphs(1).Range.Select()
this.Paragraphs[1].Range.Select();
在应用程序级项目中,可以在运行时生成 Microsoft.Office.Tools.Word.Document 宿主项。您可以使用生成的宿主项将控件添加到关联的文档。有关更多信息,请参见在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿。
Selection 对象
Selection 对象表示当前选择的区域。当您在 Word 用户界面中执行操作,例如字号文本时,可以选择或显示文本然后应用格式设置。Selection 对象始终存在于文档中。如果未选中任何对象,它表示插入点。此外,所选内容可以包含多个不连续的文本块。
Range 对象
Range 对象表示文档中的一个连续的区域,由一个起始字符位置和一个结束字符位置定义。Range 对象的数量并不局限于一个。您可以在同一文档中定义多个 Range 对象。Range 对象具有下面的特性:
它的组成成分可以是单独的插入点,也可以是一个文本范围或整个文档。
它包含非打印字符,例如空格、制表符和段落标记。
它可以是当前所选内容所表示的区域,也可以表示当前所选内容之外的区域。
与始终可见的所选内容不同,它在文档中是不可见的。
它不随文档保存,仅存在于代码运行期间。
在向一个范围的末尾插入文本时,Word 会自动扩展该范围以包含插入的文本。
内容控件对象
利用 Microsoft.Office.Interop.Word.ContentControl 可以控制输入以及文本和 Word 文档中其他类型内容的表示形式。Microsoft.Office.Interop.Word.ContentControl 可以显示若干针对在 Word 文档中使用而优化的不同类型的 UI,比如多格式文本控件、日期选择器或组合框。您也可以使用 Microsoft.Office.Interop.Word.ContentControl 防止用户编辑文档或模板的各个部分。
Visual Studio 将 Microsoft.Office.Interop.Word.ContentControl 对象扩展为若干不同的宿主控件。尽管 Microsoft.Office.Interop.Word.ContentControl 对象可以显示任何可用于内容控件的不同类型的 UI,但 Visual Studio 为每个内容控件提供不同的类型。例如,您可以使用 Microsoft.Office.Tools.Word.RichTextContentControl 来创建多格式文本控件,或者可以使用 Microsoft.Office.Tools.Word.DatePickerContentControl 来创建日期选择器。这些宿主控件的行为与本机 Microsoft.Office.Interop.Word.ContentControl 类似,但它们具有附加事件和数据绑定功能。有关更多信息,请参见内容控件。
Bookmark 对象
Microsoft.Office.Interop.Word.Bookmark 对象表示文档中同时具有起始位置和结束位置的连续区域。书签用于在文档中标记一个位置,或者用作文档中的文本容器。Microsoft.Office.Interop.Word.Bookmark 对象可以小到只有一个插入点,也可以大到整篇文档。Microsoft.Office.Interop.Word.Bookmark 与 Range 对象的不同之处在于它具有以下特点:
您可以在设计时命名书签。
Microsoft.Office.Interop.Word.Bookmark 对象随文档一起保存,因此当代码停止运行或文档关闭时,这些对象不会被删除。
书签可以隐藏或变得可见,方法是将 View 对象的 ShowBookmarks 属性设置为 false 或 true。
Visual Studio 通过提供 Microsoft.Office.Tools.Word.Bookmark 宿主控件扩展 Microsoft.Office.Interop.Word.Bookmark 对象。Microsoft.Office.Tools.Word.Bookmark 宿主控件与本机 Microsoft.Office.Interop.Word.Bookmark 的行为相似,但是前者具有附加事件和数据绑定功能。您可以将数据绑定到文档中的书签控件,绑定方法与将数据绑定到 Windows 窗体上的文本框控件的方法相同。有关更多信息,请参见Bookmark 控件。
使用 Word 对象模型文档
有关 Word 对象模型的完整信息,可以参阅 Word (PIA) 主互操作程序集 (pia) 参考,并且 applications (vba) 对象模型的 Visual Basic 引用。
主互操作程序集参考
Word PIA 参考文档介绍了 Word 主互操作程序集中的类型。此文档可从以下位置获取:Word 2010 主互操程序集参考。
有关 Word PIA 设计的更多信息(如 PIA 中类和接口之间的区别以及如何实现 PIA 中的事件),请参见 Overview of Classes and Interfaces in the Office Primary Interop Assemblies(Office 主互操作程序集中的类和接口概述)。
VBA 对象模型参考
,以便向 VBA 代码公开, VBA 对象模型参考介绍了 Word 对象模型。有关更多信息,请参见 Word 2010 Object Model Reference。
VBA 对象模型参考中的所有对象和成员都对应于 Word PIA 中的类型和成员。例如,VBA 对象模型参考中的 Document 对象对应于 Word PIA 中的 Microsoft.Office.Interop.Word.Document 对象。虽然 VBA 对象模型参考为大多数属性、方法和事件提供了代码示例中的,可以必须将 VBA 代码对 Visual Basic 或 Visual C#,但若要在使用 Visual Studio,您创建的 Word 项目中使用它们。