Welcome toWord.Tips.Net
Ask a Word Question
Make a Comment
Learn Access Now
Free Printable Forms
Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Legal Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Wedding Tips
Word2007 Tips
WordTips
Setting Fraction Bar Overhang Spacing in the Equation Editor
Printing On Both Sides of the Paper
Turning Off AutoComplete for Dates
Understanding Auto Line Spacing
Adding Comments to Your Document
Conditional Calculations in Word
Mike has a document that contains quite a few words surrounded by quote marks. He would like the quoted words to be marked for inclusion in an index and for the quote marks to be removed.
The best way to make such a change in your document is through the use of a macro. The macro needs to search for the quoted text, figure out where it starts and stops, delete the quote marks, and then add the index mark. (The mark is added through the use of an XE field.)
There are probably many ways that such a macro could be constructed. The following is one that could be used:
Sub QuotesToIndexEntries()
Dim iOpenQuote As Integer
Dim iCloseQuote As Integer
Dim sP As String
Dim sPhrase As String
Dim iParas As Integer
If Selection.ExtendMode Then Exit Sub
iParas = Selection.Paragraphs.Count
Selection.StartOf unit:=wdParagraph, Extend:=wdMove
For J = 1 To iParas
Selection.MoveEnd unit:=wdParagraph
sP = Selection.Text
iOpenQuote = InStr(sP, Chr(34))
If iOpenQuote = 0 Then iOpenQuote = InStr(sP, Chr(147))
While iOpenQuote > 0
iCloseQuote = InStr(iOpenQuote + 1, sP, Chr(34))
If iCloseQuote = 0 Then
iCloseQuote = InStr(iOpenQuote + 1, sP, Chr(148))
End If
If iCloseQuote > 0 Then
sPhrase = Mid(sP, iOpenQuote + 1, _
iCloseQuote - iOpenQuote - 1)
Selection.Collapse Direction:=wdCollapseStart
Selection.MoveRight unit:=wdCharacter, _
Count:=iOpenQuote - 1, Extend:=wdMove
Selection.Delete unit:=wdCharacter, Count:=1
Selection.MoveRight unit:=wdCharacter, _
Count:=Len(sPhrase), Extend:=wdMove
Selection.Delete unit:=wdCharacter, Count:=1
Selection.Fields.Add Range:=Selection.Range, _
Type:=wdFieldEmpty, _
PreserveFormatting:=False
Selection.MoveLeft unit:=wdCharacter, Count:=1
Selection.Delete unit:=wdCharacter, Count:=2
Selection.TypeText Text:="XE " + Chr(34) + _
sPhrase + Chr(34)
Selection.MoveRight unit:=wdCharacter, _
Count:=1, Extend:=wdMove
End If
Selection.MoveEnd unit:=wdParagraph
sP = Selection.Text
iOpenQuote = InStr(sP, Chr(34))
If iOpenQuote = 0 Then iOpenQuote = InStr(sP, Chr(147))
Wend
Selection.MoveStart unit:=wdParagraph, Count:=1
Next J
End Sub
In order to use the macro, just select the text you want to affect prior to running it. (If you want to affect the entire document, press Ctrl+A before running the macro.)
Tip #3804 applies to Microsoft Word versions: 97 2000 2002 2003 2007
Find and Replace Almost Anything! An invaluable resource for learning how to harness the full power of Word's search and replace capabilities. You'll discover everything you need in order to master all the intricacies of finding and replacing elements of your document, including the super-powerful "wildcard searches" available in Word.