Results 1 to 6 of 6

Thread: Is it possible to find duplicate paragraphs or sentences in MAC word

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    VBAX Newbie
    Jan 2020

    Is it possible to find duplicate paragraphs or sentences in MAC word

    Hi all
    Thank you so much in advance for your precious help and advice
    I am at the final stage of finishing my PhD, about 500pages, it took more than 6 years, I am sure I have repead sentences over the last years throughout the document, it is 500pages word document.
    I have tried out several proposed codes using VBA, but unfortunately, I keep receiving syntax error when I run the code
    I am not sure what´s the problem, is the version of the word?, the code?
    I am using Mac pro, mac os high sierra 10.13.6
    Microsoft word for mac 201, version 14.5.1
    This is the code that I copy and paste at VBA
    Thank you again for your kind help and time
    Option Explicit
    Sub Sample()
    Dim MyArray() As String
    Dim n As Long, i As Long
    Dim Col As New Collection
    Dim itm
    n = 0
    '~~> Get all the sentences from the word document in an array
    For i = 1 To ActiveDocument.Sentences.Count
      n = n + 1
      ReDim Preserve MyArray(n)
      MyArray(n) = Trim(ActiveDocument.Sentences(i).Text)
    '~~> Sort the array
    SortArray MyArray, 0, UBound(MyArray)
    '~~> Extract Duplicates
    For i = 1 To UBound(MyArray)
      If i = UBound(MyArray) Then Exit For
      If InStr(1, MyArray(i + 1), MyArray(i), vbTextCompare) Then
        On Error Resume Next
        Col.Add MyArray(i), """" & MyArray(i) & """"
        On Error GoTo 0
      End If
    Next i
    '~~> Highlight duplicates
    For Each itm In Col
      Selection.HomeKey wdStory, wdMove
      Selection.Find.Execute itm
      Do Until Selection.Find.Found = False
        Selection.Range.HighlightColorIndex = wdPink
    End Sub
    '~~> Sort the array
    Public Sub SortArray(vArray As Variant, i As Long, j As Long)
    Dim tmp As Variant, tmpSwap As Variant
    Dim ii As Long, jj As Long
    ii = i: jj = j: tmp = vArray((i + j) \ 2)
    While (ii <= jj)
      While (vArray(ii) < tmp And ii < j)
        ii = ii + 1
      While (tmp < vArray(jj) And jj > i)
        jj = jj - 1
      If (ii <= jj) Then
        tmpSwap = vArray(ii)
        vArray(ii) = vArray(jj): vArray(jj) = tmpSwap
        ii = ii + 1: jj = jj - 1
      End If
    If (i < jj) Then SortArray vArray, i, jj
    If (ii < j) Then SortArray vArray, ii, j
    End Sub

    Last edited by macropod; 01-13-2020 at 02:59 PM. Reason: Added code tags & formatting

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts