View Single Post
 
Old 06-21-2017, 04:05 AM
gmayor's Avatar
gmayor gmayor is offline Windows 10 Office 2016
Expert
 
Join Date: Aug 2014
Posts: 4,106
gmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud of
Default

It would not run without error if you removed the on error line.

The following should do what you suggest, though whether it works entirely as you intend will depend on whether the text comprises of manual formatting over an existing style, how much of the paragraph is manually formatted and whether you are applying a paragraph style or a character style. i.e. it obeys the rules relating to the application of styles and manually formatting.

It will work best if the whole paragraph is formatted with Segoe Script and the style is a paragraph style and not a character style OR if not, the style is a character style

The first macro will process just the document body, the second will process all the document ranges i.e. including headers and footers.

Code:
Function FontStyle(oDoc As Document) As Boolean
Dim oRng As Range
    On Error GoTo Err_Handler
    Set oRng = oDoc.Range
    oRng.Find.ClearFormatting
    oRng.Find.Replacement.ClearFormatting
    With oRng.Find
        .Text = ""
        .Font.Name = "Segoe Script"
        Do While .Execute
            oRng.Style = "AsideStyle"
            oRng.Collapse 0
        Loop
    End With
    FontStyle = True
lbl_Exit:
    Exit Function
Err_Handler:
    FontStyle = False
    Err.Clear
    GoTo lbl_Exit
End Function


Function FontStyle2(oDoc As Document) As Boolean
Dim oRng As Range
    On Error GoTo Err_Handler
    For Each oRng In oDoc.StoryRanges
        oRng.Find.ClearFormatting
        oRng.Find.Replacement.ClearFormatting
        With oRng.Find
            .Text = ""
            .Font.Name = "Segoe Script"
            Do While .Execute
                oRng.Style = "AsideStyle"
                oRng.Collapse 0
            Loop
        End With
        If oRng.StoryType <> wdMainTextStory Then
            While Not (oRng.NextStoryRange Is Nothing)
                Set oRng = oRng.NextStoryRange
                oRng.Find.ClearFormatting
                oRng.Find.Replacement.ClearFormatting
                With oRng.Find
                    .Text = ""
                    .Font.Name = "Segoe Script"
                    Do While .Execute
                        oRng.Style = "AsideStyle"
                        oRng.Collapse 0
                    Loop
                End With
            Wend
        End If
    Next oRng
    FontStyle2 = True
lbl_Exit:
    Exit Function
Err_Handler:
    FontStyle2 = False
    Err.Clear
    GoTo lbl_Exit
End Function
__________________
Graham Mayor - MS MVP (Word) (2002-2019)
Visit my web site for more programming tips and ready made processes www.gmayor.com
Reply With Quote