超星尔雅东方电影答案:VBA - 改变 Word 中对象模型的属性-“十万个为什么”电脑学习网文章收藏

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 19:25:52
 文章收藏 您的位置:主页 >> 文章收藏VBA - 改变 Word 中对象模型的属性    用户在Word中操作的每一个东西都是一个对象,如文档、对话框、文本框、图形、图表甚至Word本身都是对象,这些对象都有自己的属性和方法。因此,用户可以通过编程来访问这些已有的对象,改变它们的属性,以完成某些较特殊的操作。在对象模型中,还有一个重要的概念是集合(Collections)。所谓集合,就是一组相近对象的组合,属于一个更大的对象,例如Sentences、Words和Characters对象,就可看成一个集合,它们隶属于Range 对象,集合的重要属性是可以对其进行整体操作。本文以改变Word文档属性来说明Word对象模型的应用。
    Word文档属性的整体改变
    我们有时想将Word文档的属性(如字体、字号等)作整体改变,最常见的例子是将整篇文档的字体都按比例增大或减小一号,如果整篇文档都采用同一属性,那么就可全选整个文档,然后改变属性即可;如果文档中的不同部分的属性不同,我们就很难对其进行整体操作,唯一的办法是选择文档的不同部分进行分别操作,这样做不仅费时,而且容易出错。若借助Word的对象模型,我们就可轻易地对整个文档中的每一段、句和单词甚至是单个字的属性进行准确控制,下面以字号属性为例(其他属性类似),将文档中的所有字的字号都减小一号。
    1. 以Paragraphs(段)为操作对象,将文档中的每一段的字号都减小一号
    如果Word文档中的各段落的字号不相同,但段落内部的字号都相同,则可以通过改变段落对象的字号属性来达到我们的目的。代码如下。
    Sub paragraph()
    On Error Resume Next
    Dim myParagraph As paragraph
    ’对每一段落进行操作
    For Each myParagraph In ActiveDocument.
    Paragraphs
    ’如果该段落中的字号不尽一致或有其他格式,Word段落字号属性的返回值将为9999 9,此时使用段落对象模型不能改变该段落的字号,故退到下一段
    If myParagraph.Range.Font.Size 〉1000 Then Exit For
    ’将该段的字号减小一号
    myParagraph.Range.Font.Size=myParagraph.Range.Font.Size-1
    Next myParagraph
    End Sub
    2. 以Sentences(句子)为对象,将文档中每一句的字号都减小一号
    ……
    Dim I, J As Integer
    ’统计每一段中句子的总数
    J = myParagraph.Range.sentences.Count
    For I = 1 To J
    ’防止同一句中出现不同的字号
    If myParagraph.Range.sentences(I).Font.Size〉1000 Then Exit For
    ’将每一句的字号减小一号
    myParagraph.Range.sentences(I).Font.Size=myParagraph.Range.sentences(I). Font.Size -1
    Next I
    ……
    3. 以Words(单词)为操作对象,将文档中的每一单词的字号都减小一号
    ……
    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.S ize - 1
    Next I
    ……
    4. 以Characters(单字)为操作对象,将文档中的每一个字的字号减小一号
    ……
    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
    ……
    带格式单词的替换
    Word自身有替换命令(ctrl+h),但该命令的不足之处是,不能对带格式的单词进行替换,例如,要将整篇文档中的H2CO3替换成H2CO3,该命令就无能为力了。下面介绍如何借助Word中的对象模型来实现替换。
    Sub ReplaceWord()
    On Error Resume Next
    ’对文档中的H2CO3进行格式替换
    Dim myParagraph As Paragraph
    Dim I, J As Integer
    Dim tmpStr As String
    ’对每一段进行操作
    For Each myParagraph In ActiveDocument.Paragraphs
    ’统计该段的单词数
    J = myParagraph.Range.words.Count
    For I = 1 To J
    ’比较字符串,查找所有替换的单词
    If (LCase(myParagraph.Range.words(I)) = “h2co3“)
    Then
    ’选择所替换的单词
    myParagraph.Range.words(I).Select
    ’替换单词,写入字母H
    Selection.TypeText Text:=“H“
    ’将其格式变为下标
    Selection.Font.Subscript = True
    ’写入下标2
    Selection.TypeText Text:=“2“
    ’字体变为正常体
    Selection.Font.Subscript = False
    ’写入字母CO
    Selection.TypeText Text:=“CO“
    ’将其格式变为下标
    Selection.Font.Subscript = True
    ’写入下标3
    Selection.TypeText Text:=“3“
    ’字体变为正常体
    Selection.Font.Subscript = False
    End If
    Next I
    Next myParagraph
    End Sub    上面程序段运行后,即可将文档中所有的H2CO3全部替换成H2CO3。而且,我们还可在VBA中插入窗体,编写出同Word替换命令类似的窗口界面,来进行带格式单词的替换。      [文章来源:“十万个为什么”电脑学习网]
     [网络地址:http://why100000.com]
     [版权声明:除本站部分特别声明禁止转载的专稿外,其他的文章可以自由转载,但请务必注明出处和原始作者。本站文章版权归文章原作者所有。如果本站转载的文章有版权问题请联系本站,我们会尽快予以更正。]
 
[人气:1672]   [更新时间:2007-4-16 16:05:40]   [最后访问时间:2010-11-16 17:43:15]         【字体:[大] [中] [小]】 【打印本文】 【加入收藏】 【发表评论】 【关闭本窗口】   Copyright © “十万个为什么”电脑学习网 2000-2007 陕ICP备06007929号
站务联系:MSN & Email:zhangking2008@gmail.com  QQ:9365822     本文来自“十万个为什么”电脑学习网 http://www.why100000.com