收藏 分享(赏)

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

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

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

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

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

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

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

6、ubSenCount = .Sentences.Count 取得所选内容的句子数For Each i In .Sentences 在句子中循环如果句子中的最后一个字符为段落标记则 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 “

7、“MyString = Right(MyString, Len(MyString) - 1)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.Paragr

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

9、able = ActiveDocument.Tables(1)For Each oCell In myTable.Range.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 myRang

10、e = .Range(myTable.Range.Start, myTable.Range.Start)CellsString = 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

11、(i.Range.End - 1, i.Range.End - 1)MsgBox “第“ & i.Index & “字符总符为:“ & MyRange.End & vbCrLf & “该节结束标记位于第“ & MyRange.Information(wdActiveEndPageNumber) & “页中.“Next(7) Find 与 Replacement 中的 Range 对象以下示例在文档中向下搜索(向尾部)“狐狸” ,并在其上方标注上标字体的编号。Sub Sample()Dim MyRange As Range, FindCount As IntegerApplication.Scr

12、eenUpdating = False定义一个 Range 对象GN: With ActiveDocumentIf Not MyRange Is Nothing ThenSet MyRange = .Range(MyRange.End, .Content.End)ElseSet MyRange = ActiveDocument.ContentEnd IfEnd WithWith MyRange.Find 查找.ClearFormatting 清除查找格式.Forward = True 向下搜索.Text = “狐狸“ 搜索文本Do While .Execute 如果能查找到FindCount

13、= FindCount + 1 计数MyRange.InsertAfter FindCount 在查找到的文本区域后插入数字将此数字变为上标格式MyRange.Words(MyRange.Words.Count).Font.Superscript = TrueGoTo GN转到指定的行标签处LoopEnd WithApplication.ScreenUpdating = TrueEnd Sub(8) 书签中的 Range 对象以下示例将活动文档中的书签对应的文本区域设置字体格式Dim oBmk As BookmarkFor Each oBmk In ActiveDocument.Bookmar

14、ksWith oBmk.Range.Font.Bold = True.Name = “宋体“.Size = 14.Color = wdColorRedEnd WithNext(9) 修订中的 Range 对象以下示例显示活动文档中第一个修订对象的位置Dim StartRange As Range, EndRange As Range, MyRange As RangeSet MyRange = ActiveDocument.Revisions(1).RangeWith MyRangeIf ActiveDocument.Revisions(1).Type = wdRevisionDelete T

15、henSet StartRange = ActiveDocument.Range(.Start, .Start)Set EndRange = ActiveDocument.Range(.End + .Start - 2, .End + .Start - 2)MsgBox “您第一个修订区域的起始页码为“ & StartRange.Information(wdActiveEndPageNumber) & vbCrLf _& “您第一个修订区域的起始行号为“ & StartRange.Information(wdFirstCharacterLineNumber) & vbCrLf _& “您第一个

16、修订区域的起始列数为“ & StartRange.Information(wdFirstCharacterColumnNumber) & vbCrLf _& “您第一个修订区域的结束页码为“ & EndRange.Information(wdActiveEndPageNumber) & vbCrLf _& “您第一个修订区域的结束行号为“ & EndRange.Information(wdFirstCharacterLineNumber) & vbCrLf _& “您第一个修订区域的结束列数为“ & EndRange.Information(wdFirstCharacterColumnNumb

17、er), vbInformationEnd IfEnd With(10) 页眉页脚中的 Range 对象Sub Example()Dim myRange As Range定义一个 Range 对象,为活动文档第一节的页脚Set myRange = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).RangeWith myRange它将覆盖原有文本内容.Text = “Good Good Study ,Day Day Up!“居右.ParagraphFormat.Alignment = wdAlignParagraphRight.

18、Font.Name = “Tahoma“.Font.ColorIndex = wdBlueEnd WithEnd Sub(11) 自选图形中的 Range 对象以下示例修改活动文档中第一个文本框中第三段落中的指定字符:Dim MyRange As Range, TabPostion As Integer定义一个 Range 对象,注意这是一个文本框区域的 Range 对象,而非 DOCUMENT 下的正文文字部分的 Range 对象Set MyRange = ActiveDocument.StoryRanges(wdTextFrameStory).Paragraphs(3).Range取得制表

19、位的位置TabPostion = VBA.InStr(MyRange, vbTab)重新定义该 RANGE 对象的起始位置和结束位置,由于要改写两个地方,因此,可以重后面先改写,这样 TAB 的位置不需重新计算MyRange.SetRange MyRange.Start + TabPostion + 2, MyRange.End - 1改写文本内容MyRange.Text = “001“再次定义 MyRange 对象(恢复)Set MyRange = ActiveDocument.StoryRanges(wdTextFrameStory).Paragraphs(3).Range重新定义MyRa

20、nge.SetRange MyRange.Start + 4, MyRange.Start + TabPostion - 1改写文本内容MyRange.Text = “Microsoft Word 10.0“(12) Shapes 中的 Range 方法本示例逢单选定图形Option ExplicitOption Base 1 下标为 1Sub Example()Dim i As Integer, ShapesCount As Integer, myArray() As VariantWith ActiveDocumentShapesCount = .Shapes.Count 自选图形总数声明一个动态一维数组ReDim myArray(Int(ShapesCount + 1) / 2)For i = 1 To ShapesCount Step 2myArray(i + 1) / 2) = i 分配数组Next.Shapes.Range(myArray().Select 选定图形End WithEnd Sub

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报