![]() |
|
#1
|
|||
|
|||
|
I'm trying to create a Word 2010 macro that finds, selects, and reformats a single word in my document starting from the current cursor position. During recording of the macro, I've tried to use Find in the menu (Ctrl-F) but nothing is recorded in my macro for the find operation even though the cursor moves and highlights the found word. I've tried using the code below but that is also not moving the current cursor position to this word. Can somebody tell me how to record a Find text operation in a Word macro or else tell me what the correct VBA code is to do this? Thanks in advance!
Selection.Find.Text = "Synposis" Selection.Find.Execute Selection.Style = ActiveDocument.Styles("Body Text") Selection.Font.Bold = wdToggle |
|
#2
|
||||
|
||||
|
Your code suggests you want to toggle the bold attribute for 'Synopsis' in the 'Body Text' Style, not simply make it all bold or all not bold. In that case, you could use a macro like:
Code:
Sub Demo()
Application.ScreenUpdating = False
Dim Rng As Range
With Selection
Set Rng = .Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "Synopsis"
.Replacement.Text = "^&"
.Style = "Body Text"
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
End With
Do While .Find.Found
.Font.Bold = wdToggle
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Rng.Select
Set Rng = Nothing
Application.ScreenUpdating = True
End Sub
Code:
Sub Demo()
Application.ScreenUpdating = False
With Selection
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "Synopsis"
.Replacement.Text = "^&"
.Style = "Body Text"
.Replacement.Font.Bold = True
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End With
Application.ScreenUpdating = True
End Sub
.Replacement.Font.Bold = True to: .Replacement.Font.Bold = False
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#3
|
|||
|
|||
|
Thanks. Does the code have to be this complicated? All I want to do is find the next word "Synopsis" after the current cursor position and change it's style to Body Text and make it bold face.
|
|
#4
|
||||
|
||||
|
No, it doesn't 'have' to be so complicated, but leaving out some parameters might lead to unexpected results ...
Re: Quote:
As for changing the font to bold, if 'Synopsis' is the only word in the paragraphs concerned, you'd do better to change the 'Body Text' Style's font to bold than to override the Style format. Similarly, if 'Synopsis' is only one word of many in a paragraph, you'd do better to apply the 'Strong' character Style to 'Synopsis' than to override the Style format. For example: Code:
Sub Demo()
Application.ScreenUpdating = False
With Selection
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "Synopsis"
.Replacement.Text = "^&"
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Replacement.Style = "Body Text"
.Execute Replace:=wdReplaceAll
.Replacement.Style = "Strong"
.Execute Replace:=wdReplaceAll
End With
End With
Application.ScreenUpdating = True
End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#5
|
|||
|
|||
|
Is there any way to generate this code using Word's macro recording mode? When I tried to do a Find "Synopsis" operation, no VBA code was generated.
|
|
#6
|
||||
|
||||
|
Basic code produced using the macro recorder:
Code:
Sub Macro1()
'
' Macro1 Macro
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Style = ActiveDocument.Styles("Body Text")
With Selection.Find
.Text = "Synopsis"
.Replacement.Text = "^&"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = True
.MatchWholeWord = True
.MatchByte = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#7
|
|||
|
|||
|
How did you get it to record a Find text string operation?
|
|
#8
|
||||
|
||||
|
By inputting the parameters you see recorded into the Find/Replace dialogue...
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#9
|
|||
|
|||
|
It's recording ok now. I had to use keyboard commands to select the Find operation instead of the mouse.
Thanks for all your help! |
|
| Tags |
| macro find text |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Select a area in a Word Document
|
Peter Stahl | Word VBA | 2 | 08-09-2013 03:18 AM |
Unable to Select Multiple folders in Outlook 2007 Advance Find
|
gregory | Outlook | 2 | 04-28-2012 10:53 PM |
Select statement to a new document
|
ishaw | Word | 1 | 10-17-2011 02:23 AM |
| Unable to select anything in an MS Word Document | PaulT | Word | 0 | 08-08-2011 07:45 PM |
Select printer to document
|
JosL | Office | 3 | 03-07-2009 12:40 PM |