VBS退出循环,word文档中不再存在跟踪更改

时间:2013-07-05 04:24:40

标签: vba loops ms-word exit word-vba

我有以下代码构建一个包含轨道更改(标记)的MS字页字符串。在循环结束时,我退出最后一页包含曲目更改的位置。

然而,如果最后一页上没有曲目更改,我会陷入循环(没有双关语)。在运行期间,我得到确认框'你想要开始文档的开头'并循环

如何添加'exit do',以便找到最后一个曲目更改(不在最后一页),退出do语句?

    Sub finaltest()
      Dim CurPage As Integer      
      Dim totalPages As Integer
      Dim Pages As String

    'declare variables
      Pages = ""

      'total page count
      ActiveDocument.Repaginate
      totalPages = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)

      'get us home
      Selection.HomeKey Unit:=wdStory


      Do
        'find next change
        WordBasic.NextChangeOrComment

        'get current page
        CurPage = Selection.Information(wdActiveEndAdjustedPageNumber)
        Pages = Pages & ", " & CurPage


        '<exit loop if there is no more track changes and not at last page>


      Loop Until CurPage = totalPages
      Pages = Right(Pages, Len(Pages) - 2)
      MsgBox Pages
    End Sub

1 个答案:

答案 0 :(得分:0)

在使用WordBasic.NextChangeOrComment指令时,您确实需要跟踪哪些修订元素有点不清楚。

但是,假设您需要跟踪修订而不是评论,您可以在您放入Sub的评论之后插入下面的代码:

'<exit loop if there is no more track changes and not at last page>
With ActiveDocument.Content.Revisions
    If Selection.Range = .Item(.Count).Range Then

        'MsgBox "Last one" - for test only
        Exit Do

    End If
End With

如果您需要跟踪评论,则需要创建与修订项目类似的解决方案(Comments collection不包括Revisions collection,反之亦然)。