Word 对象模型概述
更新:2007 年 11 月
适用对象 |
---|
本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型
Microsoft Office 版本
有关更多信息,请参见按应用程序和项目类型提供的功能。 |
若要针对 Microsoft Office Word 开发 Visual Studio Tools for Office 解决方案,您可以与 Word 对象模型进行交互。此对象模型由 Word 的主互操作程序集中提供的类和接口组成,并且在 Microsoft.Office.Interop.Word 命名空间中定义。
本主题介绍关于使用 Word 对象模型的以下方面:
了解 Word 对象模型
Visual Studio Tools for Office 项目中的扩展对象
使用 Word 对象模型文档
有关使用 Word 对象模型在 Visual Studio Tools for Office 项目中执行任务的信息,请参见以下主题:
了解 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 对象
Visual Studio Tools for Office 还将其中的很多对象扩展为宿主项和宿主控件。这些扩展对象可在文档级项目中使用,从 Visual Studio 2008 Service Pack 1 (SP1) 开始,它们也可在 Word 2007 的应用程序级项目中使用。宿主项和宿主控件具有附加功能,如数据绑定功能和事件。有关宿主控件的更多信息,请参见 Visual Studio Tools for Office 项目中的扩展对象。
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 Tools for Office 通过提供 Microsoft.Office.Tools.Word.Document 类扩展了 Microsoft.Office.Interop.Word.Document 对象。此类是一个宿主项,您可以通过它访问本机 Microsoft.Office.Interop.Word.Document 类的所有成员,并且此类还增加了附加的事件和添加托管控件及智能标记的功能。有关更多信息,请参见宿主项和宿主控件概述。
当您创建文档级项目时,Visual Studio Tools for Office 会生成一个名为 ThisDocument 的类,该类派生自 Microsoft.Office.Tools.Word.Document 类。您可以从代码中使用 Me 或 Me 关键字在 ThisDocument 类中访问 Microsoft.Office.Tools.Word.Document 类的成员,或从代码中使用 ThisDocument 在 ThisDocument 类外访问这些成员。例如,若要选择文档中的第一个段落,请使用下面的代码。
Me.Paragraphs(1).Range.Select()
this.Paragraphs[1].Range.Select();
从 SP1 开始,您可以通过使用 Word 2007 的应用程序级外接程序在运行时生成 Microsoft.Office.Tools.Word.Document 宿主项。您可以使用生成的宿主项向关联的文档中添加控件和智能标记。有关更多信息,请参见 在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿。
Selection 对象
Selection 对象表示当前选择的区域。在 Word 用户界面中执行某项操作(例如,对文本进行加粗)时,应首先选择或突出显示文本,然后应用格式设置。Selection 对象始终存在于文档中。如果未选中任何对象,它表示插入点。此外,所选内容可以包含多个不连续的文本块。
Range 对象
Range 对象表示文档中的一个连续的区域,由一个起始字符位置和一个结束字符位置定义。Range 对象的数量并不局限于一个。您可以在同一文档中定义多个 Range 对象。Range 对象具有下面的特性:
它的组成成分可以是单独的插入点,也可以是一个文本范围或整个文档。
它包含非打印字符,例如空格、制表符和段落标记。
它可以是当前所选内容所表示的区域,也可以表示当前所选内容之外的区域。
与始终可见的所选内容不同,它在文档中是不可见的。
它不随文档保存,仅存在于代码运行期间。
在向一个范围的末尾插入文本时,Word 会自动扩展该范围以包含插入的文本。
内容控件对象
利用 Microsoft.Office.Interop.Word.ContentControl 可以控制输入和文本以及 Word 2007 文档中其他类型内容的表示形式。Microsoft.Office.Interop.Word.ContentControl 可以显示若干针对在 Word 文档中使用而优化的不同类型的 UI,比如多格式文本控件、日期选择器或组合框。您也可以使用 Microsoft.Office.Interop.Word.ContentControl 防止用户编辑文档或模板的各个部分。
Visual Studio Tools for Office 将 Microsoft.Office.Interop.Word.ContentControl 对象扩展为若干不同的宿主控件。尽管 Microsoft.Office.Interop.Word.ContentControl 对象可以显示任何可用于内容控件的不同类型的 UI,但 Visual Studio Tools for Office 为每种类型的 UI 提供了不同的类。例如,您可以使用 RichTextContentControl 来创建多格式文本控件,或者可以使用 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 Tools for Office 将 Microsoft.Office.Interop.Word.Bookmark 对象扩展为一个宿主控件。Microsoft.Office.Tools.Word.Bookmark 控件与本机 Microsoft.Office.Interop.Word.Bookmark 的行为相似,但是前者具有附加事件和数据绑定功能。您可以将数据绑定到文档中的书签控件,绑定方法与将数据绑定到 Windows 窗体上的文本框控件的方法相同。
有关更多信息,请参见 Bookmark 控件。
Visual Studio Tools for Office 项目中的扩展对象
了解 Word 对象模型提供的本机对象与 Visual Studio Tools for Office 提供的扩展对象(宿主项和宿主控件)之间的区别非常重要。这两种类型的对象都可用于 Word 2007 的文档级项目和应用程序级项目。有关更多信息,请参见宿主项和宿主控件概述。
区别体现在以下四个方面:
设计时。当您在设计时向文档级自定义项添加任何扩展的 Word 控件时,它们都将自动创建为宿主控件。例如,如果在设计器中向文档添加一个书签,则会自动生成将该书签扩展为 Microsoft.Office.Tools.Word.Bookmark 控件的代码。
运行时。不会在运行时自动创建宿主项。如果在运行时使用 Add 方法添加文档,它们将是 Microsoft.Office.Interop.Word.Document 对象,不具备 Microsoft.Office.Tools.Word.Document 宿主项所提供的附加功能。通过使用 Visual Studio Tools for Office 提供的帮助器方法,您可以以编程方式向文档中添加宿主控件。有关更多信息,请参见宿主项和宿主控件的编程限制。
说明: 从 SP1 开始,您可以通过使用 Word 2007 的应用程序级外接程序在运行时创建 Microsoft.Office.Tools.Word.Document 宿主项。有关更多信息,请参见在运行时在应用程序级外接程序中扩展 Word 文档和 Excel 工作簿。
新增功能。宿主项和宿主控件具有对本机对象不可用的功能。宿主项可用作托管控件的容器,并且它们还具有附加事件。宿主控件可以绑定到数据,并且具有附加事件。
类型。本机 Word 对象使用 Word 的主互操作程序集的 Microsoft.Office.Interop.Word 命名空间中定义的类型,而宿主项和宿主控件则使用 Visual Studio Tools for Office 运行时的 Microsoft.Office.Tools.Word 命名空间中定义的类型。
使用 Word 对象模型文档
有关可在 Word 对象模型中使用的类的信息,请参见以下文档集:
第一个链接提供有关 Word 主互操作程序集中的类和接口的信息。其他链接提供有关向 Visual Basic for Applications (VBA) 代码公开 Word 对象模型时该模型的信息。对于使用 Visual Studio Tools for Office 的开发人员而言,每组文档都有优缺点。
主互操作程序集参考
此文档描述 Word 主互操作程序集中的、可在 Visual Studio Tools for Office 项目内使用的所有类型。但是,此文档也存在一些不足:
它只描述了 Word 2003 主互操作程序集中的类型。要了解 Word 2007 主互操作程序集中的新类型和成员的说明,您必须参考 Word 2007 的 VBA 参考。
该文档目前未提供任何代码示例。
VBA 参考
VBA 参考中的所有对象和成员都对应于您在 Visual Studio Tools for Office 项目中使用的主互操作程序集中的类和成员。例如,Word VBA 文档中的 Document 对象对应于主互操作程序集中的 Microsoft.Office.Interop.Word.Document 类。
VBA 参考具有下列优点:
它同时描述了 Word 2007 和 Word 2003 的对象模型。
它为大多数成员提供了代码示例。
VBA 参考存在下列不足之处:
- 它只提供了适用于 VBA 的语法和代码示例。若要在 Visual Studio Tools for Office 项目中使用这些代码示例,您必须将 VBA 代码转换为 Visual Basic 或 Visual C#。
主互操作程序集中的附加类型
主互操作程序集包含许多不可用于 VBA 的类型。这些附加类型可帮助将 Word 基于 COM 的对象模型中的对象转换为托管代码,并且不应在代码中直接使用。
有关更多信息,请参见 Overview of Classes and Interfaces in the Office Primary Interop Assemblies。
请参见
概念
参考
其他资源
修订记录
日期 |
修订 |
原因 |
---|---|---|
2008 年 7 月 |
增加了有关在应用程序级外接程序中创建 Document 宿主项的信息。 |
SP1 功能更改。 |