Word 对象模型概述

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

  • 文档级项目

  • 应用程序级项目

Microsoft Office 版本

  • Word 2003

  • Word 2007

有关更多信息,请参见按应用程序和项目类型提供的功能。

若要针对 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 类外访问这些成员。例如,若要选择文档中的第一个段落,请使用下面的代码。

Visual Basic
复制代码

Me.Paragraphs(1).Range.Select()

C#
复制代码

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 对象模型中使用的类的信息,请参见以下文档集:

  • Microsoft Office Word 主互操作参考

  • 欢迎使用 Microsoft Office Word 2007 开发人员参考

  • 欢迎使用 Microsoft Office Word 2003 VBA 语言参考

第一个链接提供有关 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 的对象模型中的对象转换为托管代码,并且不应在代码中直接使用。

word对象模型概述相关推荐

  1. python的对象模型_[ Python 源码剖析] 对象模型概述

    Python 是一门 面向对象 语言,实现了一个完整的面向对象体系,简洁而优雅. 与其他面向对象编程语言相比, Python 有自己独特的一面. 这让很多开发人员在学习 Python 时,多少有些无所 ...

  2. 【转】1.2SharePoint服务器端对象模型 之 对象模型概述(Part 2)

    (三)Url 作为一个B/S体系,在SharePoint的属性.方法参数和返回值中,大量的涉及到了Url,总的来说,涉及到的Url可以分为如下四类: 绝对路径:完整的Url,包含了协议头(http或h ...

  3. 【转】1.SharePoint服务器端对象模型 之 对象模型概述(Part 1)

    在一个传统的ASP.NET开发过程中,我们往往会把开发分为界面展现层.逻辑业务层和数据访问层这三个层面.作为一个应用开发平台,SharePoint是微软在直观的开发能力和自由的扩展能力之间,取到的一个 ...

  4. JavaScript浏览器对象模型概述(1)

    1.什么是Bom 2.Dom和Bom不同区别 3.Bom的构成

  5. Python面向对象模型概述

    建议将思维导图保存下来观看,或点击这里在线观看.

  6. Word(WPS文字) VBA办公自动化

    课程介绍 本课程主要介绍Word(WPS文字) VBA脚本编程的主要方法. 点这里看视频课程 课程目录 第一章:Word对象模型概述Word对象模型 06:51 第二章:Word应用:Applicat ...

  7. Word(WPS文字)+Python win32com办公自动化

    课程介绍 本课程主要结合Python win32com包介绍Word(WPS文字)办公自动化的各种方法.相关内容包括Python语言基础.Word对象包括文档.Range.段落.节.域.页眉页脚.书签 ...

  8. 【C++】C++对象模型:对象内存布局详解(C#实例)

    C++对象模型:对象内存布局详解 0.前言 C++对象的内存布局.虚表指针.虚基类指针解的探讨,参考. 1.何为C++对象模型? 引用<深度探索C++对象模型>这本书中的话: 有两个概念可 ...

  9. 计算机应用基础浙大,2014春浙大远程教育计算机应用基础-3.Word知识题

    第3章 文字处理Word 2010(单选题) 一. Word 2010概述 1. Word具有的功能是__D__. A.表格处理 ---- Word既能处理文字又能处理表格 B.绘制图形 ---- 利 ...

  10. .NET操作WORD文档另存为其他格式的文件

    刚在研究研究怎么可以在.NET程序中把WORD文档另存为XPS文件,学习了一些概念和操作,马上记录下来吧,进入正题. 1. 添加与WORD互操作的类库,里面包含着WORD对象模型的.NET表示: 一看 ...

最新文章

  1. 介绍 Java 的内存泄漏
  2. 【转载】2010年最全最新令人无语语录
  3. 第5章 Python 数字图像处理(DIP) - 图像复原与重建10 - 空间滤波 - 统计排序滤波器 - 中值、最大值、最小值、中点、修正阿尔法均值滤波器
  4. 实操来了!一文告诉你如何用 Streamlit 和 Heroku 开发 Web
  5. 3d环形图片展示 js_网易公开课Three.js实践 勋章系统
  6. 活动推荐 | 首届“中新人工智能高峰论坛”,与周志华、李德毅等大咖对话未来...
  7. Win7中语音识别功能的详细介绍
  8. 实用网站、软件、App分享
  9. CO-PA: 获利能力分析类型(基于成本核算、基于会计核算)解析
  10. 学生健康管理软件/中小学体检数据管理系统
  11. Git, Gitlab使用文档
  12. 使用HTML实现百度首页界面
  13. Unity+Kinect 开发脚本介绍
  14. 计算机金钱符号怎么打,€欧元符号怎么打出来?各种输入欧元的货币符号方法!...
  15. 爱奇艺“技术气氛组”上线!点击查收你的专属AI拜年新姿势
  16. NOIP 2017 游记
  17. 搭建Wordpress Mu的插件和注意事项
  18. 鸽巢原理(抽屉原理)
  19. aixcoder邀请码
  20. 01背包与完全背包(动态规划)(01背包)

热门文章

  1. Linux学习笔记(1)--Linux的发展史
  2. BIOS实战之Super IO-Smart Fan
  3. 06.Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
  4. C语言—内存的管理和释放
  5. Unity Json存档读档操作
  6. 如果已经安装过个人版Delphi2007,如何安装Delphi2007企业版
  7. java实现qq页面登陆界面
  8. Python学习随笔:PyCharm的错误检测使用及调整配置减少错误数量
  9. JPA/Hibernate 中@Formula的作用
  10. 甲A十年十大悲情时刻回顾 谁的眼泪在空中飞舞?