现在的位置: 首页 > 综合 > 正文

Office 中的 Word

2012年11月09日 ⁄ 综合 ⁄ 共 2919字 ⁄ 字号 评论关闭

在所有 Office 应用程序中,Microsoft Word 可能是应用最广泛的应用程序,它还经常在自定义 Office 解决方案中扮演重要的角色。开发人员用各种不同的方式使用 Word,有一些方式很简单,而另一些极其复杂。无论涉及何种自定义解决方案,用 Visual Basic for Applications (VBA) 处理 Word 文档的基本方法都是一样的

理解基本方法

Word 中,几乎所有的操作都要调用 Document 对象本身或其内容。当您用 VBA 操作 Word 时,Document 对象表示一个打开的文档,而且所有的 Document 对象都是 Application 对象的 Documents 集合的成员。

文档是一个由字符、单词、句子和段落组成的集合,字符组成单词,单词组成句子,句子组成段落,等等。因此,每一个 Document 对象都具有 CharactersWordsSentences Paragraghs 四个集合。此外,每个文档具有一个包含一个或多个节的 Sections 集合,每一个节都有一个包含该节页眉和页脚的 HeadersFooters 集合。

注意: 您可以在 Microsoft Office 2000 开发人员对象模型指南(英文)中查阅完整的 Word 对象模型。另外,您也可以使用对象浏览器和 Microsoft Word Visual Basic 参考帮助来学习有关具体某个对象、属性、方法和事件的详细内容。

通过 VBA 使用 Word 时,Document 对象处于中心位置。如果您要打开文档或创建新文档,就要创建新的 Document 对象。每个打开或新创建的文档均被添加至 Documents 集合。具有焦点的文档称为活动文档,由 ActiveDocument 属性表示。

Document 对象作为 Documents 集合中的一个成员,您可以通过使用 Document 对象的索引值(Document 对象在 Documents 集合中的位置,1 是集合中的第一个文档)或名称来引用它。另外,您也可以使用 ActiveDocument 属性来引用当前具有焦点的文档。例如,如果名为 Policies.doc 的文档是唯一打开的文档,则以下三个对象变量将全部指向 Policies.doc

Dim docOne As Word.Document

Dim docTwo As Word.Document

Dim docThree As Word.Document

 

Set docOne = Documents(1)

Set docTwo = Documents("Policies.doc")

Set docThree = ActiveDocument

一般情况下不要使用 Documents 集合中的索引值来引用文档,因为当其它文档打开或关闭时,某个特定文档的索引值可能会随之改变。通常,您可以通过使用 ActiveDocument 属性或使用 Documents 集合的 Add 方法或 Open 方法创建的 Document 对象变量。以下示例显示了如何使用 ActiveDocument 属性把一个地址添加到当前具有焦点的文档中:

With ActiveDocument

   .Envelope.Insert Address:="Office Talk" _

      & vbCrLf & "

One Microsoft Way

" & vbCrLf _

      & " Redmond, WA 98052", ReturnAddress:= _

      "David Shank" & vbCrLf & _

      "77

First Street

" & vbCrLf & _

      "Any Town, USA 12345"

End With

下面的示例说明如何通过使用 Documents 集合的 Open 方法,实例化 Document 对象变量。

Dim docPolicy As Word.Document

Set docPolicy = Documents.Open("c:/my documents/policies.doc")

最后一个示例显示如何通过使用 Add 方法,为新的空文档创建 Document 对象的实例。

Dim docPolicy As Word.Document

Set docPolicy = Documents.Add

通过使用 Open 方法打开的文档,或者通过使用 Add 方法创建的文档,都将成为用 ActiveDocument 属性表示的当前活动文档。如果您想使 Documents 集合里的其它文档成为活动文档,可使用 Document 对象的 Active 方法。

一旦您获取了要操作的 Document 对象,绝大部分您想通过 VBA 进行的工作将涉及文本的操作。首先要指定文档的一个部分,然后对它进行某些操作。例如,添加或删除文本,或者设置单词或字符的格式。您可以使用 Range Selection 这两个对象来完成很多工作。在本月的专栏中,我将只讨论 Range 对象。下个月我们将进一步讨论 Selection 对象的具体内容。

理解 Word 的段落标记

当您通过程序处理文本时,必须理解 Word 如何处理段落标记。从根本上来看,Word 文档不过是一个巨大的字符流。人们倾向于认为文档是单词、句子和段落的集合。但实际上,文档就是一些字符。每个字符都有一定的作用。某些字符是字母、空格或制表符,另一些字符是段落标记或分页符。

段落标记在 Word 文档中扮演独特的角色,有时这种角色容易被误解。段落包含一个段落标记以及所有位于此段落标记和前一个段落标记之间的文本(不包括前一个段落标记)。另外,重要的是,段落标记本包含该段落的所有格式信息。

当复制单词、句子和段落时,如果包含段落标记,则所有包含在段落标记中的格式信息也被复制,并在它们被粘贴到其它位置时应用于所属段落。

如果您想从段落中复制文本并将其粘贴到另一个段落中,但不想同时复制段落格式,复制时请不要包括您要复制的文本旁边的段落标记。

每个空白的 Word 文档仅有一个段落标记,其中同时包含 Character 对象、Word 对象、Sentence 对象和 Paragragh 对象各一个。但是,属性对话框(文件菜单)中的统计信息选项卡将报告空白文档中没有字符、单词、句子和段落。这种差异突出显示了 Word 的一个重要侧面,当编程操作这些对象时,您需要特别注意这一点。

Range 对象

Range 对象表示文档中的一个连续范围,由一个起始字符位置和一个终止字符位置定义。这个连续范围可以小到一个插入点,大到整个文档。它也可能是(而非必须是)由当前节表示的范围。您也可以定义一个 Range 对象,表示和当前节不同的范围。也可以在同一个文档中定义多个 Range 对象。Range 对象中的字符包含非打印字符,例如,空格、回车符和段落标记。

使用 Range 对象

创建 Range 对象的典型方法为:声明一个 Range 类型的对象变量,然后用 Document 对象的 Range 方法或另一个对象(例如 CharacterWordSentence Selection 对象)的 Range 属性来实例化该变量。例如,以下代码创建了两个 Range 对象,均表示活动文档中的第二个句子。

Dim rngRangeMethod As Word.Range

Dim rngRangeProperty As Word.Range

 

抱歉!评论已关闭.