View Single Post
 
Old 01-16-2019, 08:21 PM
Guessed's Avatar
Guessed Guessed is offline Windows 10 Office 2016
Expert
 
Join Date: Mar 2010
Location: Canberra/Melbourne Australia
Posts: 3,977
Guessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant futureGuessed has a brilliant future
Default

Yes, it is possible but not particularly quick. There may be more efficient ways of doing it but my attempt at it resulted in the following code. Note there wasn't any comprehensive error checking done on this.
Code:
Sub DupWordMarks()
  Dim aWord As String, iCounter As Long, iWords As Long, iLen As Long, iTotalWords As Long
  Dim aRng As Range, iEnd As Long, i As Long
    
  iLen = 20   'the size of the range searched forward
  iTotalWords = ActiveDocument.Words.Count
  
  For iCounter = 1 To iTotalWords - 1
    Select Case Trim(ActiveDocument.Words(iCounter))
      Case "you", "a", "the", "can", "for", ".", "to", "and", ",", ";"
        'do nothing
      Case Else
        If iCounter + iLen < iTotalWords Then
          iEnd = iCounter + iLen
        Else
          iEnd = iTotalWords
        End If
        Set aRng = ActiveDocument.Range(ActiveDocument.Words(iCounter).End, ActiveDocument.Words(iEnd).End)
        For i = 1 To aRng.Words.Count
          If LCase(Trim(ActiveDocument.Words(iCounter))) = LCase(Trim(aRng.Words(i))) Then
            aRng.Words(i).HighlightColorIndex = wdPink
            Exit For
          End If
        Next i
    End Select
    'If iCounter = 500 Then Exit Sub   'enable an artificial restraint to stop the code when testing
  Next iCounter
End Sub
__________________
Andrew Lockton
Chrysalis Design, Melbourne Australia
Reply With Quote