#1
|
|||
|
|||
How to find and select text in a document?
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 |