![]() |
#1
|
|||
|
|||
![]()
Hello all.
I'm trying to find a way to highlight word and sentences in a file from a list located in another file. I found a a macro online but the problem is that it will highligh all single words. What should I do if I want to highlight a list of strings composed of several words (Like phrasal verb or expression for exemple) For exemple, I want it to highlight all "Fill out" but leaving alone all "fill" and "out" that are not a part of "Fill out" Thank you the Macro I found on https://wordribbon.tips.net/ is: Sub CompareWordList() Dim sCheckDoc As String Dim docRef As Document Dim docCurrent As Document Dim wrdRef As Object sCheckDoc = "c:\checklist.doc" Set docCurrent = Selection.Document Set docRef = Documents.Open(sCheckDoc) docCurrent.Activate Options.DefaultHighlightColorIndex = wdYellow With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Replacement.Highlight = True .Replacement.Text = "^&" .Forward = True .Format = True .MatchWholeWord = True .MatchCase = True .MatchWildcards = False End With For Each wrdRef In docRef.Words If Asc(Left(wrdRef, 1)) > 32 Then With Selection.Find .Wrap = wdFindContinue .Text = Trim(wrdRef) .Execute Replace:=wdReplaceAll End With End If Next wrdRef docRef.Close docCurrent.Activate End Sub |
#2
|
||||
|
||||
![]()
You would need either to put the phrases in a table or in separate paragraphs then instead of searching for words you would search for the contents of the table cells or the paragraphs e.g.
Code:
For i = 1 To docRef.Paragraphs.Count Set oPara = docRef.Paragraphs(1).Range oPara.End = oPara.End - 1 strFind = oPara.Text 'do stuff with opara.text Next i
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#3
|
|||
|
|||
![]()
Hello.
Yes, I was thinking that it would be better to use an Excel file for my list. I'm very sorry. I know nothing about VBA. What should I modify on the code ? Where to put: Code:
For i = 1 To docRef.Paragraphs.Count Set oPara = docRef.Paragraphs(1).Range oPara.End = oPara.End - 1 strFind = oPara.Text 'do stuff with opara.text Next i thx you |
#4
|
||||
|
||||
![]()
You replace the original loop with this one e.g. as follows
checkphrases.docx sholuld have each word or phrase to find in a new paragraph (with no empty paragraphs). Code:
Sub ComparePhraseList() Dim sCheckDoc As String Dim docRef As Document Dim docCurrent As Document Dim i As Integer Dim oPara As Range sCheckDoc = "c:\path\checkphrases.docx" 'Change to the path where the document is located. Set docCurrent = Selection.Document Set docRef = Documents.Open(sCheckDoc) docCurrent.Activate Options.DefaultHighlightColorIndex = wdYellow With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Replacement.Highlight = True .Replacement.Text = "^&" .Forward = True .Format = True .MatchWholeWord = True .MatchCase = True .MatchWildcards = False End With For i = 1 To docRef.Paragraphs.Count Set oPara = docRef.Paragraphs(i).Range oPara.End = oPara.End - 1 With Selection.Find .Wrap = wdFindContinue .Text = oPara.Text .Execute Replace:=wdReplaceAll End With Next i docRef.Close docCurrent.Activate Set docRef = Nothing Set docCurrent = Nothing Set oPara = Nothing End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#5
|
|||
|
|||
![]()
Hello.
Thank you for your answer. After I wrote the last comment I realised that my question was stupid :P I just tried it and it's working very well. I just changed the case sensitive for "False". Thx a lot for your help ![]() |
#6
|
|||
|
|||
![]()
Hello.
I have a last question. I see the macro and ... what is beween the first With Selection.Find // End With.. could be moved to the code you added (I tried and it works same) Also, if I track modification on word, I see that the macro highlight the word first, then erase it and replace it with non highlight word. If the change tracking is not activated, I see highlited word as final result. It's not a big deal, since a can desactivate the tracking before the macro. But I'm curious to know why it's like that. Code:
With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Replacement.Highlight = True .Replacement.Text = "^&" .Forward = True .Format = True .MatchWholeWord = True .MatchCase = True .MatchWildcards = False End With For i = 1 To docRef.Paragraphs.Count Set oPara = docRef.Paragraphs(i).Range oPara.End = oPara.End - 1 With Selection.Find .Wrap = wdFindContinue .Text = oPara.Text .Execute Replace:=wdReplaceAll End With Next i Last edited by Asuryan33; 03-18-2019 at 10:28 AM. Reason: More information |
![]() |
Tags |
highlight, vba, word 2016 |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
Nanaia | Word VBA | 3 | 09-07-2018 02:13 PM |
![]() |
smallxyz | Word | 2 | 02-06-2016 02:54 AM |
Macro to highlight repeated words in word file and extract into excel file | aabri | Word VBA | 1 | 06-14-2015 07:20 AM |
Error: The file may be corrupted, located on a server that is not responding, or read | naeemeh | Excel | 2 | 11-20-2011 03:38 AM |
find - reading highlight - highlight all / highlight doesn't stick when saved | bobk544 | Word | 3 | 04-15-2009 03:31 PM |