Macro to print only pages which got revised in word document
From
Purell@21:1/5 to
All on Wed Jul 17 21:53:23 2019
Hello,
This is something I need help from you guys. I have a pretty large
document and when these documents gets revised instead of searching
where the changes happened and print them. Is there a way to print only
the pages where changes happened.
I have found a Macro to do this, print only the pages where changes
happened but when I hit print the document gets refreshed and all the
cross referenced such as Table numbers, figure numbers get updated and
when I used the macro it prints those pages as well.
Below is the Marco I have got from some user in this forum:
Sub PrintTrackedChanges()
Dim revpagestart As Long, revpageend As Long, pageprint As String,
changedpages As String
pageprint = 0
changedpages = ""
Application.ScreenUpdating = False
currentselectionstart = Application.Selection.Start
currentselectionend = Application.Selection.End
With ActiveDocument
If .Revisions.Count = 0 Then MsgBox ("There are no revisions in this document"): GoTo Finish
If .Revisions.Count 20 Then If MsgBox("There are" +
Str(.Revisions.Count) + " revisions in this document. Checking and
printing them may take some time. Continue?", vbYesNo) = vbNo Then
GoTo Finish
For i = 1 To .Revisions.Count
Revisions(i).Range.Select
revpageend = Selection.Information(wdActiveEndPageNumber)
Selection.Collapse wdCollapseStart
revpagestart = Selection.Information(wdActiveEndPageNumber)
If .Revisions(i).Type = wdRevisionProperty Then GoTo Skip
If .Revisions(i).Type = wdRevisionParagraphProperty Then GoTo
Skip
If .Revisions(i).Type = wdRevisionSectionProperty Then GoTo
Skip
If pageprint = revpageend Then GoTo Skip
If revpagestart = revpageend Then
changedpages = changedpages + Str(revpageend) + ", "
pageprint = revpageend
End If
If revpageend revpagestart Then
changedpages = changedpages + Str(revpagestart) + "-" +
Str(revpageend) + ", "
pageprint = revpageend
End If
Skip:
Next i
End With
If changedpages = "" Then
MsgBox "There are no changed pages to print"
GoTo Finish
End If
changedpages = Left(changedpages, Len(changedpages) - 2)
With Dialogs(wdDialogFilePrint)
Range = wdPrintRangeOfPages
Pages = changedpages
Show
End With
Finish:
Selection.SetRange Start:=currentselectionstart,
End:=currentselectionend
Application.ScreenUpdating = True
End Sub
--
Purell
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)