WORD·VBA入门教程(第四课)

上传人:灯火****19 文档编号:121019456 上传时间:2020-02-14 格式:DOC 页数:5 大小:35KB
返回 下载 相关 举报
WORD·VBA入门教程(第四课)_第1页
第1页 / 共5页
WORD·VBA入门教程(第四课)_第2页
第2页 / 共5页
WORD·VBA入门教程(第四课)_第3页
第3页 / 共5页
WORD·VBA入门教程(第四课)_第4页
第4页 / 共5页
WORD·VBA入门教程(第四课)_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《WORD·VBA入门教程(第四课)》由会员分享,可在线阅读,更多相关《WORD·VBA入门教程(第四课)(5页珍藏版)》请在金锄头文库上搜索。

1、第四课:WORD中的Range对象在操纵Word VBA,绝大多数是针对Word中的各视图中的文本进行的,正确掌握、理解和应用Word Range是Word Vba的重要一课,初学者甚至熟悉Excel的编程人员,往往对Word 中的Range对象手足无措,原因是不了解Word中Range对象的本质和意义。1. Range 对象的定义:该对象代表文档中的一个连续范围。每一个 Range 对象由一起始和一终止字符位置定义。和文档中书签的使用方法类似,Visual Basic 使用 Range 对象识别文档的指定部分。但和书签不同,Range 对象只在定义该对象的过程正在运行时才存在。Range 对

2、象和所选内容相互独立。也就是说,可定义和复制一个范围而不需改变所选内容。还可在文档中定义多个范围,但每一个窗格中只能有一个所选内容。透彻的理解,只要是以文本形式存在的区域,就有Range对象,无论是页眉页脚中,批注脚注中,还是图形的文本框中,无论是一个光标,一个字符、一个词、一个句子、一个段落、一节还是一个文档,都可以看成是一个Range对象。2. 对比Range对象如果同EXCEL中的Range对象对比,你也许会更容易理解一些。Excel中,每个单元格,是一个Range对象,连续或者非连续的单元格,都可以组成一个Range对象,它由单元格地址组成的;在Word中,每个字符是一个“单元格”,它

3、是由每个字符(无论是否可见,如段落标记等)构成了一个文档的Range对象,尽管它存活在运行时间中,也就是凡是由字符组成的具有起点和终点位置的连续文本,哪怕起点等于终点(光标)或者终点是起点位置的下一个字符,都是一个Range对象。而Word中的Selection对象可以理解成EXCEL中的ActiveCell对象。3. StoryRanges对象:StoryRanges由 Range 对象组成的集合,该集合代表文档中的文字部分。可使用 StoryRanges(index) 返回单个部分(作为一个 Range 对象),其中 index 为一个 wdStoryType 常量。Start、End和S

4、toryType属性唯一地确定了一个Range对象。Start和End属性分别返回或者设置Range对象的起始和结束字符的位置。每个文档构成部分起始处的字符位置是0 (zero),而第一个字符之后的位置是1,依此类推。StoryType 属性的WdStoryType常量可以表示十一种不同的文档构成部分类型,如下:wdCommentsStorywdEndnotesStorywdEvenPagesFooterStorywdEvenPagesHeaderStorywdFirstPageFooterStorywdFirstPageHeaderStorywdFootnotesStorywdMainTex

5、tStorywdPrimaryFooterStorywdPrimaryHeaderStorywdTextFrameStory(3) 在句子中循环以下示例罗列出所选文本中的句子数量和结尾的标点符号。Sub Example()Dim i As Range, SenCount As Integer, MyString As String, EndChar As StringWith SelectionIf .Type = wdSelectionIP Then Exit SubSenCount = .Sentences.Count 取得所选内容的句子数For Each i In .Sentences

6、在句子中循环如果句子中的最后一个字符为段落标记则EndChar为段落标记的前一个字符If i.Characters(i.Characters.Count) = Chr(13) ThenEndChar = i.Characters(i.Characters.Count - 1)ElseEndChar = i.Characters(i.Characters.Count)End If以英文分号为分隔符,将结束标点在变量中累加MyString = MyString & ; & EndCharNext去除最后一个;MyString = Right(MyString, Len(MyString) - 1)

7、End WithMsgBox 所选内容的句子数: & SenCount & vbCrLf & 它们的结束标点分别为: & MyStringEnd Sub(4) 在段落中循环以下示例将本文档中的空白段落删除,并提示删除的空白段落数量。Sub Example()Dim Par As Paragraph, ParRange As Range, BlankCount As IntegerApplication.ScreenUpdating = FalseFor Each Par In Me.ParagraphsSet ParRange = Par.RangeIf Len(ParRange) = 1 T

8、hen ParRange.Delete: BlankCount = BlankCount + 1NextApplication.ScreenUpdating = TrueMsgBox Word共为您删除了 & BlankCount & 个空白段落!, vbInformationEnd Sub(5) 表格中的Range对象以下示例将活动文档表格1中的空白单元格填充0值。Sub Sample()Dim myTable As Table, oCell As CellSet myTable = ActiveDocument.Tables(1)For Each oCell In myTable.Rang

9、e.CellsIf oCell.Range.End - oCell.Range.Start = 1 Then oCell.Range = 0NextEnd Sub以下示例在表格的起始位置插入表格各单元格中的文本,然后删除表格。Sub Sample()Dim myTable As Table, myRange As Range, CellsString As StringWith ActiveDocumentSet myTable = .Tables(1)Set myRange = .Range(myTable.Range.Start, myTable.Range.Start)CellsStri

10、ng = myTable.Range.TextmyTable.DeletemyRange.InsertAfter CellsStringEnd WithEnd Sub(6) 节中的Range对象以下示例中统计每节的字符数(含所有可见与不可见字符),以及显示本节的结束位置。Dim i As Section, MyRange As RangeFor Each i In ThisDocument.SectionsSet MyRange = ThisDocument.Range(i.Range.End - 1, i.Range.End - 1)MsgBox 第 & i.Index & 字符总符为: &

11、 MyRange.End & vbCrLf & 该节结束标记位于第 & MyRange.Information(wdActiveEndPageNumber) & 页中.Next(7) Find与Replacement中的Range 对象以下示例在文档中向下搜索(向尾部)“狐狸”,并在其上方标注上标字体的编号。Sub Sample()Dim MyRange As Range, FindCount As IntegerApplication.ScreenUpdating = False定义一个Range对象GN: With ActiveDocumentIf Not MyRange Is Nothi

12、ng ThenSet MyRange = .Range(MyRange.End, .Content.End)ElseSet MyRange = ActiveDocument.ContentEnd IfEnd WithWith MyRange.Find 查找.ClearFormatting 清除查找格式.Forward = True 向下搜索.Text = 狐狸 搜索文本Do While .Execute 如果能查找到FindCount = FindCount + 1 计数MyRange.InsertAfter FindCount 在查找到的文本区域后插入数字将此数字变为上标格式MyRange.

13、Words(MyRange.Words.Count).Font.Superscript = TrueGoTo GN转到指定的行标签处LoopEnd WithApplication.ScreenUpdating = TrueEnd Sub(8) 书签中的Range对象以下示例将活动文档中的书签对应的文本区域设置字体格式Dim oBmk As BookmarkFor Each oBmk In ActiveDocument.BookmarksWith oBmk.Range.Font.Bold = True.Name = 宋体.Size = 14.Color = wdColorRedEnd WithN

14、ext(9) 修订中的Range对象以下示例显示活动文档中第一个修订对象的位置Dim StartRange As Range, EndRange As Range, MyRange As RangeSet MyRange = ActiveDocument.Revisions(1).RangeWith MyRangeIf ActiveDocument.Revisions(1).Type = wdRevisionDelete ThenSet StartRange = ActiveDocument.Range(.Start, .Start)Set EndRange = ActiveDocument.

15、Range(.End + .Start - 2, .End + .Start - 2)MsgBox 您第一个修订区域的起始页码为 & StartRange.Information(wdActiveEndPageNumber) & vbCrLf _& 您第一个修订区域的起始行号为 & StartRange.Information(wdFirstCharacterLineNumber) & vbCrLf _& 您第一个修订区域的起始列数为 & StartRange.Information(wdFirstCharacterColumnNumber) & vbCrLf _& 您第一个修订区域的结束页码

16、为 & EndRange.Information(wdActiveEndPageNumber) & vbCrLf _& 您第一个修订区域的结束行号为 & EndRange.Information(wdFirstCharacterLineNumber) & vbCrLf _& 您第一个修订区域的结束列数为 & EndRange.Information(wdFirstCharacterColumnNumber), vbInformationEnd IfEnd With(10) 页眉页脚中的Range对象Sub Example()Dim myRange As Range定义一个Range对象,为活动文档第一节的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号