![]() |
|
#1
|
|||
|
|||
|
I have created a Word file containing letters from an Access database. The font for the whole file is Times New Roman and fontsize 12. I send a copy of each letter to the subject and, at the end of each letter, there is a line that starts with “cc “ and is then followed by the name and address of the subject.
I have been trying to go through the document searching for “cc “, selecting the sentence and then changing the fontsize to 9, but I am struggling with the Word VBA. This is what I have so far: Code:
With objWord.Visible = True
objDocs("Temporary.docx").Activate
.Selection.HomeKey unit:=wdStory
Do
With .Selection.Find
.Execute findtext:="cc "
.Wrap = wdFindStop
Selection.Extend
Selection.Extend
Selection.Extend
.ClearFormatting
.Font.Name = "Times New Roman"
.Font.Size = 12
.Text = ""
With .Replacement
.ClearFormatting
.Font.Size = 9
.Text = ""
.Collapse Direction:=wdCollapseEnd
End With
End With
Loop Until .Selection.Find.Found = False
End With
Last edited by macropod; 01-05-2014 at 03:18 PM. Reason: Added code tags & formatting |
|
#2
|
|||
|
|||
|
Something like this provided each cc line constitutes a singe paragraph. Change oDoc to represent your objDoc.
Code:
Sub ScratchMacro()
'A basic Word macro coded by Greg Maxey
Dim oDoc As Word.Document
Dim oRng As Word.Range
Set oRng = ActiveDocument.Range
With oRng.Find
.Text = "cc"
While .Execute
If oRng.Start = oRng.Paragraphs(1).Range.Start Then
With oRng
.MoveEnd wdParagraph
With .Font
.Name = "Times New Roman"
.Size = 12
End With
.Collapse wdCollapseEnd
End With
End If
Wend
End With
End Sub
|
|
#3
|
||||
|
||||
|
I believe you could use something like:
Code:
With objWord.Documents("Temporary.docx").Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^13cc [!^13]@^13"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
.Execute
End With
Do While .Find.Found
.Start = .Start + 1
.Font.Size = 9
.Collapse 0 '0= wdCollapseEnd
.Find.Execute
Loop
End With
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#4
|
|||
|
|||
|
Thank you both very much for your help. Neither solution seemed to work initially and I have been experimenting with variations on the code. I also realised that I should be searching either for "cc" + Tab or, possibly, CR + "cc" + Tab. The nearest I have got is with this:
Code:
With .Documents("Temporary.docx").Range
Do
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "cc^9"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
.Execute
End With
.Font.Size = 9
.Collapse 0 '0= wdCollapseEnd
.Find.Execute
Loop While .Find.Found
End With
Last edited by macropod; 01-06-2014 at 02:23 PM. Reason: Added code tags & formatting |
|
#5
|
||||
|
||||
|
Quote:
.Text = "^13cc [!^13]@^13" to: .Text = "^13cc[ ^t][!^13]@^13" will act on all paragraphs starting with 'cc' followed by a tab or space. Similarly, deleting '.Start = .Start + 1' and the first ^13 will work on any "cc" + Tab/space, till the end of that paragraph.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#6
|
|||
|
|||
|
That did the trick. Thanks very much indeed Paul.
|
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Loop action in Word until not found
|
kilburfi | Word VBA | 2 | 07-12-2013 01:26 AM |
Reformat line lengths
|
joe925 | Word | 1 | 03-18-2013 05:06 PM |
| reformat file | renato | Word | 1 | 06-13-2012 06:32 AM |
Macro to loop in Word
|
Yamaha Rider | Word VBA | 2 | 02-07-2012 05:33 PM |
Bad view when using Find and Find & Replace - Word places found string on top line
|
paulkaye | Word | 4 | 12-06-2011 11:05 PM |