如下图所示
在word中可以用“定位”功能快速地定位到具体的页、节、行、书签、批注、脚注、尾注、域、表格、图形、公式、对象、标题等。
在vba中可以使用Document、Range、Selection对象的GoTo方法实现上图中的定位功能,它的语法如下:
expression .GoTo(What, Which, Count, Name)
其中what参数表示要定位的对象,可以有如下值:
Name | Value | Description |
wdGoToBookmark | -1 | 书签 |
wdGoToComment | 6 | 批注 |
wdGoToEndnote | 5 | 尾注 |
wdGoToEquation | 10 | 公式 |
wdGoToField | 7 | 域 |
wdGoToFootnote | 4 | 脚注 |
wdGoToGrammaticalError | 14 | 语法错误 |
wdGoToGraphic | 8 | 图片 |
wdGoToHeading | 11 | 标题 |
wdGoToLine | 3 | 行 |
wdGoToObject | 9 | 对象 |
wdGoToPage | 1 | 页 |
wdGoToPercent | 12 | 比例 |
wdGoToProofreadingError | 15 | 校验错误 |
wdGoToSection | 0 | 节 |
wdGoToSpellingError | 13 | 拼写错误 |
wdGoToTable | 2 | 表格 |
Which参数表示要使用的定位方式,是绝对位置还是相对位置,可以有如下的值:
Name | Value | Description |
wdGoToAbsolute | 1 | 使用绝对位置 |
wdGoToFirst | 1 | 第一个 |
wdGoToLast | -1 | 最后一个 |
wdGoToNext | 2 | 下一个 |
wdGoToPrevious | 3 | 上一个 |
wdGoToRelative | 2 | 相对于当前的位置 |
Count参数表示要移动的数量,Name参数表示具体的对象的名称。
特别注意的是,Document、Range、Selection对象的GoTo方法定位的结果是将光标移至该对象的起始位置,返回的是Range对象。
如下代码用Document、Range、Selection对象的GoTo方法遍历word文档中的每一页:
Sub QQ1722187970() Const wdActiveEndPageNumber = 3 Const wdGoToHeading = 11 Const wdGoToAbsolute = 1 Const wdGoToPage = 1 Dim oDoc As Document Dim oWord As Word.Application Set oWord = Word.Application Set oDoc = oWord.ActiveDocument Dim oRng As Range With oDoc iMin = -1 I = 1 Do '循环每页 Set oRng = .GoTo(wdGoToPage, wdGoToAbsolute, I) '如果到底或者回到头则退出循环 If oRng.Start < iMin Or oRng.Start = iMin Then Exit Do Debug.Print oRng.Start, oRng.End iMin = oRng.Start I = I + 1 Loop Until 1 <> 1 End With End Sub
发表评论