Hello,
I have a list of about 200 phrases and words (common technical writing
errors not found in default Word grammer/style checker). How can quickly
find and highlight the occurences of the words/phrases in a document without
tediously using the find/replace function 200 times? I prefer a macro-free
method if availabe, since I know little about macros.
Another possible route: is there any way to customize the style checker
feature of the grammar checker, i.e., add phrases that Word search for which
it offers suggestions. There's gotta be some file that has a list the Word
uses.
I found a script for a macro on the internet, but, for example, for the
phrase "on behalf of" it would highlight every single occurrence of "on" and
"of" instead of requiring the phrase:
http://word.tips.net/Pages/T000502_Highlight_Words_from_a_Word_List.html
Thanks!
Phil
|
|
0
|
|
|
|
Reply
|
Utf
|
1/15/2010 12:01:02 AM |
|
There is no simple or macro free way to do this. Even a method using macros
may be problematic to set up as you have already found. However the
following macro may help.
Put all your words and phrases in a document, each to a separate line, with
no empty paragraphs anywhere - especially at the end. Save it as a word
document then include the document name and its path in the line sFname =.
The macro ignores the case of the found words/phrases. If you want it to
match the case, change the .MatchCase = False line to .MatchCase = True.
http://www.gmayor.com/installing_macro.htm
Dim ChangeDoc As Document, RefDoc As Document
Dim oRng As Range
Dim oPara As Range
Dim i As Long
Dim sFname As String
sFname = "D:\My Documents\Test\Changes2.doc"
Set RefDoc = ActiveDocument
Set ChangeDoc = Documents.Open(sFname)
RefDoc.Activate
For i = 1 To ChangeDoc.Paragraphs.Count
Set oRng = ChangeDoc.Paragraphs(i).Range
oRng.End = oRng.End - 1
With Selection
.HomeKey wdStory
With .Find
.Text = oRng
.MatchWholeWord = True
.MatchCase = False
Do While .Execute(Forward:=True) = True
Selection.Range.HighlightColorIndex _
= wdYellow
Loop
End With
End With
Next i
ChangeDoc.Close wdDoNotSaveChanges
--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP
My web site www.gmayor.com
Word MVP web site http://word.mvps.org
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
"PhilD" <PhilD@discussions.microsoft.com> wrote in message
news:44B9BBC6-D703-49BB-B625-7BB6C7BF2043@microsoft.com...
> Hello,
> I have a list of about 200 phrases and words (common technical writing
> errors not found in default Word grammer/style checker). How can quickly
> find and highlight the occurences of the words/phrases in a document
> without
> tediously using the find/replace function 200 times? I prefer a
> macro-free
> method if availabe, since I know little about macros.
>
> Another possible route: is there any way to customize the style checker
> feature of the grammar checker, i.e., add phrases that Word search for
> which
> it offers suggestions. There's gotta be some file that has a list the
> Word
> uses.
>
> I found a script for a macro on the internet, but, for example, for the
> phrase "on behalf of" it would highlight every single occurrence of "on"
> and
> "of" instead of requiring the phrase:
> http://word.tips.net/Pages/T000502_Highlight_Words_from_a_Word_List.html
>
> Thanks!
> Phil
|
|
0
|
|
|
|
Reply
|
Graham
|
1/15/2010 7:12:17 AM
|
|
Worked like a charm! I know this next question is a longshot: any way to
have word suggest changes (suggestions I would include in the word document)
as it does for spelling/grammer? I image this would involve editing the
(proprietary?) word grammar lists.
Thanks again,
Phil
"Graham Mayor" wrote:
> There is no simple or macro free way to do this. Even a method using macros
> may be problematic to set up as you have already found. However the
> following macro may help.
> Put all your words and phrases in a document, each to a separate line, with
> no empty paragraphs anywhere - especially at the end. Save it as a word
> document then include the document name and its path in the line sFname =.
> The macro ignores the case of the found words/phrases. If you want it to
> match the case, change the .MatchCase = False line to .MatchCase = True.
> http://www.gmayor.com/installing_macro.htm
>
> Dim ChangeDoc As Document, RefDoc As Document
> Dim oRng As Range
> Dim oPara As Range
> Dim i As Long
> Dim sFname As String
>
> sFname = "D:\My Documents\Test\Changes2.doc"
>
> Set RefDoc = ActiveDocument
> Set ChangeDoc = Documents.Open(sFname)
> RefDoc.Activate
> For i = 1 To ChangeDoc.Paragraphs.Count
> Set oRng = ChangeDoc.Paragraphs(i).Range
> oRng.End = oRng.End - 1
> With Selection
> .HomeKey wdStory
> With .Find
> .Text = oRng
> .MatchWholeWord = True
> .MatchCase = False
> Do While .Execute(Forward:=True) = True
> Selection.Range.HighlightColorIndex _
> = wdYellow
> Loop
> End With
> End With
> Next i
> ChangeDoc.Close wdDoNotSaveChanges
>
>
> --
> <>>< ><<> ><<> <>>< ><<> <>>< <>><<>
> Graham Mayor - Word MVP
>
> My web site www.gmayor.com
> Word MVP web site http://word.mvps.org
> <>>< ><<> ><<> <>>< ><<> <>>< <>><<>
>
>
> "PhilD" <PhilD@discussions.microsoft.com> wrote in message
> news:44B9BBC6-D703-49BB-B625-7BB6C7BF2043@microsoft.com...
> > Hello,
> > I have a list of about 200 phrases and words (common technical writing
> > errors not found in default Word grammer/style checker). How can quickly
> > find and highlight the occurences of the words/phrases in a document
> > without
> > tediously using the find/replace function 200 times? I prefer a
> > macro-free
> > method if availabe, since I know little about macros.
> >
> > Another possible route: is there any way to customize the style checker
> > feature of the grammar checker, i.e., add phrases that Word search for
> > which
> > it offers suggestions. There's gotta be some file that has a list the
> > Word
> > uses.
> >
> > I found a script for a macro on the internet, but, for example, for the
> > phrase "on behalf of" it would highlight every single occurrence of "on"
> > and
> > "of" instead of requiring the phrase:
> > http://word.tips.net/Pages/T000502_Highlight_Words_from_a_Word_List.html
> >
> > Thanks!
> > Phil
>
>
> .
>
|
|
0
|
|
|
|
Reply
|
Utf
|
1/15/2010 12:39:01 PM
|
|
Hmmm. It would be simple enough to replace the found text with another text,
but it starts to get a bit cumbersome if you want the user to pick from a
choice of replacements each time. That would be potentially 200 items each
of which may appear multiple times in a document?
Nevertheless the following could work. In this case the document containing
the words comprises a table with the words/phrases to find in the first
column and the choices of replacement in the second and subsequent columns.
You can have as many choices (each to a separate cell) as you can fit on the
page and you can have more or fewer (or no) choices for each word/phrase,
but don't leave any empty columns between the first column and any
subsequent filled columns on the same row. Fill from left to right.
If the word/phrase in the first column is found, the word/phrase is selected
and the user is given the list of possible replacements. If there are no
replacements listed the word is highlighted, otherwise the word is replaced
with the user's choice. The user input is error trapped against impossible
entry choices.
Although tested on a simple document with a limited number of selections, I
would suggest that you do not test it on a valuable document ;)
Sub ReplaceFromTableList()
Dim ChangeDoc As Document, RefDoc As Document
Dim cTable As Table
Dim oldPart As Range, newPart, oFound As Range
Dim i, j, iCol As Long
Dim sFname, sReplaceText, sNum As String
sFname = "D:\My Documents\Test\changes.doc"
Set RefDoc = ActiveDocument
Set ChangeDoc = Documents.Open(sFname)
Set cTable = ChangeDoc.Tables(1)
RefDoc.Activate
For i = 1 To cTable.Rows.Count
Set oldPart = cTable.Cell(i, 1).Range
oldPart.End = oldPart.End - 1
With Selection
.HomeKey wdStory
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWholeWord = True
Do While .Execute(findText:=oldPart)
Set oFound = Selection.Range
iCol = 1
sReplaceText = ""
For j = 2 To cTable.Columns.Count
Set newPart = cTable.Cell(i, j).Range
newPart.End = newPart.End - 1
If Len(newPart) = 0 Then Exit For
sReplaceText = sReplaceText & iCol & ". " & _
newPart.Text & vbCr
iCol = iCol + 1
Next j
If Len(sReplaceText) <> 0 Then
Again:
sNum = InputBox(sReplaceText & vbCr & vbCr & _
"Enter the number of the replacement for '" _
& oldPart.Text & "'")
If sNum = "" Then Exit Sub
If IsNumeric(sNum) = False Then
MsgBox "Invalid entry! Try again.", _
vbInformation, "Error"
GoTo Again
End If
If sNum > cTable.Columns.Count Then
MsgBox "Invalid entry! Try again.", _
vbInformation, "Error"
GoTo Again
End If
If Len(cTable.Cell(i, sNum + 1).Range) = 2 Then
MsgBox "Invalid entry! Try again.", _
vbInformation, "Error"
GoTo Again
End If
Set newPart = cTable.Cell(i, sNum + 1).Range
newPart.End = newPart.End - 1
oFound.Text = newPart.Text
Else
oFound.HighlightColorIndex = wdYellow
End If
Loop
End With
End With
Next i
ChangeDoc.Close wdDoNotSaveChanges
End Sub
--
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
Graham Mayor - Word MVP
My web site www.gmayor.com
Word MVP web site http://word.mvps.org
<>>< ><<> ><<> <>>< ><<> <>>< <>><<>
"PhilD" <PhilD@discussions.microsoft.com> wrote in message
news:9539DCD1-1CDF-4139-BF28-2F0BB9F0E773@microsoft.com...
> Worked like a charm! I know this next question is a longshot: any way to
> have word suggest changes (suggestions I would include in the word
> document)
> as it does for spelling/grammer? I image this would involve editing the
> (proprietary?) word grammar lists.
>
> Thanks again,
> Phil
>
> "Graham Mayor" wrote:
>
>> There is no simple or macro free way to do this. Even a method using
>> macros
>> may be problematic to set up as you have already found. However the
>> following macro may help.
>> Put all your words and phrases in a document, each to a separate line,
>> with
>> no empty paragraphs anywhere - especially at the end. Save it as a word
>> document then include the document name and its path in the line sFname
>> =.
>> The macro ignores the case of the found words/phrases. If you want it to
>> match the case, change the .MatchCase = False line to .MatchCase = True.
>> http://www.gmayor.com/installing_macro.htm
>>
>> Dim ChangeDoc As Document, RefDoc As Document
>> Dim oRng As Range
>> Dim oPara As Range
>> Dim i As Long
>> Dim sFname As String
>>
>> sFname = "D:\My Documents\Test\Changes2.doc"
>>
>> Set RefDoc = ActiveDocument
>> Set ChangeDoc = Documents.Open(sFname)
>> RefDoc.Activate
>> For i = 1 To ChangeDoc.Paragraphs.Count
>> Set oRng = ChangeDoc.Paragraphs(i).Range
>> oRng.End = oRng.End - 1
>> With Selection
>> .HomeKey wdStory
>> With .Find
>> .Text = oRng
>> .MatchWholeWord = True
>> .MatchCase = False
>> Do While .Execute(Forward:=True) = True
>> Selection.Range.HighlightColorIndex _
>> = wdYellow
>> Loop
>> End With
>> End With
>> Next i
>> ChangeDoc.Close wdDoNotSaveChanges
>>
>>
>> --
>> <>>< ><<> ><<> <>>< ><<> <>>< <>><<>
>> Graham Mayor - Word MVP
>>
>> My web site www.gmayor.com
>> Word MVP web site http://word.mvps.org
>> <>>< ><<> ><<> <>>< ><<> <>>< <>><<>
>>
>>
>> "PhilD" <PhilD@discussions.microsoft.com> wrote in message
>> news:44B9BBC6-D703-49BB-B625-7BB6C7BF2043@microsoft.com...
>> > Hello,
>> > I have a list of about 200 phrases and words (common technical writing
>> > errors not found in default Word grammer/style checker). How can
>> > quickly
>> > find and highlight the occurences of the words/phrases in a document
>> > without
>> > tediously using the find/replace function 200 times? I prefer a
>> > macro-free
>> > method if availabe, since I know little about macros.
>> >
>> > Another possible route: is there any way to customize the style
>> > checker
>> > feature of the grammar checker, i.e., add phrases that Word search for
>> > which
>> > it offers suggestions. There's gotta be some file that has a list the
>> > Word
>> > uses.
>> >
>> > I found a script for a macro on the internet, but, for example, for the
>> > phrase "on behalf of" it would highlight every single occurrence of
>> > "on"
>> > and
>> > "of" instead of requiring the phrase:
>> > http://word.tips.net/Pages/T000502_Highlight_Words_from_a_Word_List.html
>> >
>> > Thanks!
>> > Phil
>>
>>
>> .
>>
|
|
0
|
|
|
|
Reply
|
Graham
|
1/15/2010 2:29:33 PM
|
|
|
3 Replies
509 Views
(page loaded in 0.124 seconds)
|