分享

通过 VBA 操纵 WORD 设计考试题库 | 尘封记忆

 shuaixinerwei 2012-03-16

通过 VBA 操纵 WORD 设计考试题库

摘要:

关键字: WORD

目录

  • 文档模型
  • 操作
    • 文件操作
    • 内容操作
    • 段落操作
    • 字符操作
  • 实例
    • 在ACCESS中操作WORD完成题库设计
  • 总结

文档模型

Application 对象包含 Document、Selection、Bookmark 和 Range 对象。Word 提供了数百个您可与之交互的对象。以下各部分简要描述顶级对象以及它们彼此之间如何进行交互。这些对象包括:

  • Application 对象
  • Document 对象
  • Selection 对象
  • Range 对象
  • Bookmark 对象

大部分代码是在 ThisDocument 类中编写的,您可以使用 Me 或 this 对象引用来访问 ThisDocument 的成员。例如,为了选择文档中的第一个段落,可以使用下面的代码:

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

Selection 对象

Selection 对象表示当前选择的区域。在 Word 用户界面中执行某项操作(例如,对文本进行加粗)时,应首先选择或突出显示文本,然后应用格式设置。Selection 对象始终存在于文档中。如果未选中任何对象,它表示插入点。此外,它也可以是不连续的多个文本块。

例1: 以paragraph(段落)为操作对象,将文档中的每一段的字号减小一:

如果Word文档中的各段落的字号不尽相同,但段落内部的字号都相同,则可通过改变段落对象的字号属性来达到我们的目的。打开Word工具菜单的Visu Basic编辑器,键入下列程序:

  1. Sub paragraph()
  2. On Error Resume Next
  3. Dim myParagraph As paragraph
  4. "对每一段落进行操作
  5. For Each myParagraph In ActiveDocument.Paragraphs
  6. "如果该段落中的字号不尽一致或有其它格式,Word段落字号属性的返回值将为99999
  7. "此时使用段落对象模型不能改变该段落的字号,故退到下一段
  8. If myParagraph.Range.Font.Size $#@62; 1000 Then Exit For
  9. "将该段的字号减小一号
  10. myParagraph.Range.Font.Size = myParagraph.Range.Font.Size – 1
  11. Next myParagraph
  12. End Sub

单击运行按钮,便能使Word文档中每一段字号减小一号。同样,若Word文档中每一句、每一个单词甚至每一个字的字号都不尽同,我们可将图1模型中中的Sentences、Words和Characters作为对象进行相应的编程,具体程序段如下。

例2:以Sentences(句子)为对象,将文档中每一句的字号减小一:

Sub sentences()
On Error Resume Next
Dim myParagraph As paragraph
Dim I, J As Integer
For Each myParagraph In ActiveDocument.Paragraphs
  "统计每一段中句子总数
  J = myParagraph.Range.sentences.Count
  For I = 1 To J
  "防止同一句中出现不同的字号,具体解释同上
     If myParagraph.Range.sentences(I).Font.Size $#@62; 1000 Then Exit For
     "将每一句的字号减小一
     myParagraph.Range.sentences(I).Font.Size = myParagraph.Range.sentences(I).Font.Size – 1
  Next I
Next myParagraph
End Sub

例3: 以Words(单词)为操作对象,将文档中的每一句的字号减小一:

Sub words()
On Error Resume Next
Dim myParagraph As paragraph
Dim I, J As Integer
For Each myParagraph In ActiveDocument.Paragraphs
 "统计每一段中总字数
 J = myParagraph.Range.words.Count
 "将每一个字的字号减小一
 For I = 1 To J
   myParagraph.Range.words(I).Font.Size = myParagraph.Range.words(I).Font.Size – 1
 Next I
Next myParagraph
End Sub
d) 以Characters(单字)为操作对象,将文档中的每一个字的字号减小一:

Sub characters()
On Error Resume Next
Dim myParagraph As paragraph
Dim I, J As Integer
For Each myParagraph In ActiveDocument.Paragraphs
 "统计每一段中总字数
 J = myParagraph.Range. characters.Count
 "将每一个字的字号减小一
 For I = 1 To J
   myParagraph.Range. characters(I).Font.Size = myParagraph.Range. characters(I).Font.Size – 1
 Next I
Next myParagraph
End Sub

Range 对象

Range 对象表示文档中的一个连续的区域,由一个起始字符位置和一个结束字符位置定义。Range 对象的数量并不局限于一个。您可以在同一文档中定义多个 Range 对象。Range 对象具有下面的特性:。

  • 它的组成成分可以是单独的插入点,也可以是一个文本范围或整个文档
  • 它包含非打印字符,例如空格、制表符和段落标记。
  • 它可以是当前选择所表示的区域,也可以表示当前选择之外的区域。
  • 与所选内容总是可见不同,它在文档中是不可见的。
  • 它不随文档保存,仅存在于代码运行期间。
  • 在向一个范围的末尾插入文本时,Word 会自动扩展该范围以包含插入的文本。

Bookmark 对象

文档中的 Microsoft.Office.Interop.Word.Bookmark 是控制文档中的文本的最容易的方法,在这一点上它类似于 Windows 窗体上的文本框控件。Microsoft.Office.Interop.Word.Bookmark 对象表示文档中同时具有起始位置和结束位置的连续区域。书签用于在文档中标记一个位置,或者用作文档中的文本容器。Microsoft.Office.Interop.Word.Bookmark 对象可以小到只有一个插入点,也可以大到整篇文档。Microsoft.Office.Interop.Word.Bookmark 与 Range 对象的不同之处在于它具有以下特点:

  • 您可以在设计时命名书签。
  • Microsoft.Office.Interop.Word.Bookmark 对象随文档一起保存,因此当代码停止运行或文档关闭时,它不会被删除。
  • 书签可以隐藏或变得可见,方法是将 View 对象的 ShowBookmarks 属性设置为 True 或 False。

参考文献

  1. Word 对象模型概述 http://msdn.microsoft.com/zh-cn/library/kw65a0we(VS.80).aspx
  2.  
Tags: ,

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多