jafartiyar
10-14-2010, 09:23 AM
Hi guys,
 
really need your help here
 
i'm trying to create a VBA code to pull trakced changes from a document and display it in a newly created document, along with information such as the page and line numbers, author and date of the tracked change.
 
Does anyone know how i need to change this code so that it picks up ALL changes including formatting changes and comments. This code is only for insertions and deletions but i've tried a few edits and nothing seems to work
 
Thanks guys
 
 
------code-----
 
Public Sub ExtractTrackedChangesToNewDoc()
 
Dim oDoc As Document
Dim oNewDoc As Document
Dim oTable As Table
Dim oRow As Row
Dim oCol As Column
Dim oRange As Range
Dim oRevision As Revision
Dim strText As String
Dim n As Long
Dim i As Long
Dim Title As String
 
Title = "Extract Tracked Changes to New Document"
n = 0
 
Set oDoc = ActiveDocument
 
If oDoc.Revisions.Count = 0 Then
MsgBox "The active document contains no tracked changes.", vbOKOnly, Title
GoTo ExitHere
Else
 
If MsgBox("Do you want to extract tracked changes to a new document?" & vbCr & vbCr & _
"NOTE: Only insertions and deletions will be included. " & _
"All other types of changes will be skipped.", _
vbYesNo + vbQuestion, Title) <> vbYes Then
GoTo ExitHere
End If
End If
 
Application.ScreenUpdating = False
 
Set oNewDoc = Documents.Add
 
oNewDoc.PageSetup.Orientation = wdOrientLandscape
With oNewDoc
 
.Content = ""
 
With .PageSetup
.LeftMargin = CentimetersToPoints(2)
.RightMargin = CentimetersToPoints(2)
.TopMargin = CentimetersToPoints(2.5)
End With
 
Set oTable = .Tables.Add _
(Range:=Selection.Range, _
numrows:=1, _
NumColumns:=6)
End With
 
 
oNewDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = _
"Tracked changes extracted from: " & oDoc.FullName & vbCr & _
"Created by: " & Application.UserName & vbCr & _
"Creation date: " & Format(Date, "MMMM d, yyyy")
 
 
With oNewDoc.Styles(wdStyleNormal)
With .Font
.Name = "Arial"
.Size = 9
.Bold = False
End With
With .ParagraphFormat
.LeftIndent = 0
.SpaceAfter = 6
End With
End With
 
With oNewDoc.Styles(wdStyleHeader)
.Font.Size = 8
.ParagraphFormat.SpaceAfter = 0
End With
 
 
With oTable
.Range.Style = wdStyleNormal
.AllowAutoFit = False
.PreferredWidthType = wdPreferredWidthPercent
.PreferredWidth = 100
For Each oCol In .Columns
oCol.PreferredWidthType = wdPreferredWidthPercent
Next oCol
.Columns(1).PreferredWidth = 5
.Columns(2).PreferredWidth = 5
.Columns(3).PreferredWidth = 10
.Columns(4).PreferredWidth = 55
.Columns(5).PreferredWidth = 15
.Columns(6).PreferredWidth = 10
 
 
End With
 
With oTable.Rows(1)
.Cells(1).Range.Text = "Page"
.Cells(2).Range.Text = "Line"
.Cells(3).Range.Text = "Type"
.Cells(4).Range.Text = "What has been inserted or deleted"
.Cells(5).Range.Text = "Author"
.Cells(6).Range.Text = "Date"
 
 
End With
 
 
For Each oRevision In oDoc.Revisions
Select Case oRevision.Type
 
Case wdRevisionInsert, wdRevisionDelete
 
With oRevision
 
strText = .Range.Text
 
Set oRange = .Range
Do While InStr(1, oRange.Text, Chr(2)) > 0
 
i = InStr(1, strText, Chr(2))
 
If oRange.Footnotes.Count = 1 Then
strText = Replace(Expression:=strText, _
Find:=Chr(2), Replace:="[footnote reference]", _
Start:=1, Count:=1)
 
oRange.Start = oRange.Start + i
 
ElseIf oRange.Endnotes.Count = 1 Then
strText = Replace(Expression:=strText, _
Find:=Chr(2), Replace:="[endnote reference]", _
Start:=1, Count:=1)
 
oRange.Start = oRange.Start + i
End If
Loop
End With
 
n = n + 1
 
Set oRow = oTable.Rows.Add
 
 
With oRow
 
.Cells(1).Range.Text = _
oRevision.Range.Information(wdActiveEndPageNumber)
 
 
.Cells(2).Range.Text = _
oRevision.Range.Information(wdFirstCharacterLineNumber)
 
 
If oRevision.Type = wdRevisionInsert Then
.Cells(3).Range.Text = "Inserted"
 
oRow.Range.Font.Color = wdColorAutomatic
Else
.Cells(3).Range.Text = "Deleted"
 
oRow.Range.Font.Color = wdColorRed
End If
 
 
.Cells(4).Range.Text = strText
 
 
.Cells(5).Range.Text = oRevision.Author
 
 
.Cells(6).Range.Text = Format(oRevision.Date, "mm-dd-yyyy")
End With
End Select
Next oRevision
 
 
If n = 0 Then
MsgBox "No insertions or deletions were found.", vbOKOnly, Title
oNewDoc.Close savechanges:=wdDoNotSaveChanges
GoTo ExitHere
End If
 
 
With oTable.Rows(1)
.Range.Font.Bold = True
.HeadingFormat = True
End With
 
Application.ScreenUpdating = True
Application.ScreenRefresh
 
oNewDoc.Activate
MsgBox n & " tracked changed have been extracted. " & _
"Finished creating document.", vbOKOnly, Title
ExitHere:
Set oDoc = Nothing
Set oNewDoc = Nothing
Set oTable = Nothing
Set oRow = Nothing
Set oRange = Nothing
 
End Sub
really need your help here
i'm trying to create a VBA code to pull trakced changes from a document and display it in a newly created document, along with information such as the page and line numbers, author and date of the tracked change.
Does anyone know how i need to change this code so that it picks up ALL changes including formatting changes and comments. This code is only for insertions and deletions but i've tried a few edits and nothing seems to work
Thanks guys
------code-----
Public Sub ExtractTrackedChangesToNewDoc()
Dim oDoc As Document
Dim oNewDoc As Document
Dim oTable As Table
Dim oRow As Row
Dim oCol As Column
Dim oRange As Range
Dim oRevision As Revision
Dim strText As String
Dim n As Long
Dim i As Long
Dim Title As String
Title = "Extract Tracked Changes to New Document"
n = 0
Set oDoc = ActiveDocument
If oDoc.Revisions.Count = 0 Then
MsgBox "The active document contains no tracked changes.", vbOKOnly, Title
GoTo ExitHere
Else
If MsgBox("Do you want to extract tracked changes to a new document?" & vbCr & vbCr & _
"NOTE: Only insertions and deletions will be included. " & _
"All other types of changes will be skipped.", _
vbYesNo + vbQuestion, Title) <> vbYes Then
GoTo ExitHere
End If
End If
Application.ScreenUpdating = False
Set oNewDoc = Documents.Add
oNewDoc.PageSetup.Orientation = wdOrientLandscape
With oNewDoc
.Content = ""
With .PageSetup
.LeftMargin = CentimetersToPoints(2)
.RightMargin = CentimetersToPoints(2)
.TopMargin = CentimetersToPoints(2.5)
End With
Set oTable = .Tables.Add _
(Range:=Selection.Range, _
numrows:=1, _
NumColumns:=6)
End With
oNewDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = _
"Tracked changes extracted from: " & oDoc.FullName & vbCr & _
"Created by: " & Application.UserName & vbCr & _
"Creation date: " & Format(Date, "MMMM d, yyyy")
With oNewDoc.Styles(wdStyleNormal)
With .Font
.Name = "Arial"
.Size = 9
.Bold = False
End With
With .ParagraphFormat
.LeftIndent = 0
.SpaceAfter = 6
End With
End With
With oNewDoc.Styles(wdStyleHeader)
.Font.Size = 8
.ParagraphFormat.SpaceAfter = 0
End With
With oTable
.Range.Style = wdStyleNormal
.AllowAutoFit = False
.PreferredWidthType = wdPreferredWidthPercent
.PreferredWidth = 100
For Each oCol In .Columns
oCol.PreferredWidthType = wdPreferredWidthPercent
Next oCol
.Columns(1).PreferredWidth = 5
.Columns(2).PreferredWidth = 5
.Columns(3).PreferredWidth = 10
.Columns(4).PreferredWidth = 55
.Columns(5).PreferredWidth = 15
.Columns(6).PreferredWidth = 10
End With
With oTable.Rows(1)
.Cells(1).Range.Text = "Page"
.Cells(2).Range.Text = "Line"
.Cells(3).Range.Text = "Type"
.Cells(4).Range.Text = "What has been inserted or deleted"
.Cells(5).Range.Text = "Author"
.Cells(6).Range.Text = "Date"
End With
For Each oRevision In oDoc.Revisions
Select Case oRevision.Type
Case wdRevisionInsert, wdRevisionDelete
With oRevision
strText = .Range.Text
Set oRange = .Range
Do While InStr(1, oRange.Text, Chr(2)) > 0
i = InStr(1, strText, Chr(2))
If oRange.Footnotes.Count = 1 Then
strText = Replace(Expression:=strText, _
Find:=Chr(2), Replace:="[footnote reference]", _
Start:=1, Count:=1)
oRange.Start = oRange.Start + i
ElseIf oRange.Endnotes.Count = 1 Then
strText = Replace(Expression:=strText, _
Find:=Chr(2), Replace:="[endnote reference]", _
Start:=1, Count:=1)
oRange.Start = oRange.Start + i
End If
Loop
End With
n = n + 1
Set oRow = oTable.Rows.Add
With oRow
.Cells(1).Range.Text = _
oRevision.Range.Information(wdActiveEndPageNumber)
.Cells(2).Range.Text = _
oRevision.Range.Information(wdFirstCharacterLineNumber)
If oRevision.Type = wdRevisionInsert Then
.Cells(3).Range.Text = "Inserted"
oRow.Range.Font.Color = wdColorAutomatic
Else
.Cells(3).Range.Text = "Deleted"
oRow.Range.Font.Color = wdColorRed
End If
.Cells(4).Range.Text = strText
.Cells(5).Range.Text = oRevision.Author
.Cells(6).Range.Text = Format(oRevision.Date, "mm-dd-yyyy")
End With
End Select
Next oRevision
If n = 0 Then
MsgBox "No insertions or deletions were found.", vbOKOnly, Title
oNewDoc.Close savechanges:=wdDoNotSaveChanges
GoTo ExitHere
End If
With oTable.Rows(1)
.Range.Font.Bold = True
.HeadingFormat = True
End With
Application.ScreenUpdating = True
Application.ScreenRefresh
oNewDoc.Activate
MsgBox n & " tracked changed have been extracted. " & _
"Finished creating document.", vbOKOnly, Title
ExitHere:
Set oDoc = Nothing
Set oNewDoc = Nothing
Set oTable = Nothing
Set oRow = Nothing
Set oRange = Nothing
End Sub