0
votes

I am trying to use a Word Macro to select all text with the style "Number_List" and call the .ConvertNumbersToText function on it. I am having trouble only finding the list or that specific style.

Dim selBkUp As Range
Set selBkUp = ActiveDocument.Range(ActiveDocument.Range.Start, ActiveDocument.Range.End)
With ActiveDocument.Range.Find
    .Style = ActiveDocument.Styles("Number_List")
    .Forward = True
    .Wrap = wdFindContinue
    Dim SearchSuccessful As Boolean
    SearchSuccessful = .Execute

    If SearchSuccessful Then
        selBkUp.Select
        Selection.Range.ListFormat.ConvertNumbersToText
    Else
        ' code
    End If
End With

I select the entire document and covert all of the lists numbers to text, but I am trying to only select ones with that specific style or avoid the other 5 styles that may or may not be present. Any help would be appreciated!

1
what is: '.ParagraphFormat.ra'Wayne G. Dunn
Typo, apologies.Torewin

1 Answers

0
votes

The following code will search for one style and, if found, will convert to another style. Below this code is another subroutine that will list all styles found in a document.

' From http://forums.codeguru.com/showthread.php?448185-Macro-to-Change-Styles-in-Word
' This code will search for a specified Style and convert that to another Style
Sub FindReplaceStyle()
    Selection.HomeKey wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting

    With Selection.Find
         .Style = "Normal"                      ' Look for 'Normal'
         '.Text = ""
         .Replacement.Style = "Heading 1"       ' Change to 'Heading 1'
    '     .Replacement.Text = ""
         .Forward = True
         .Wrap = wdFindStop
         .Format = True
         .MatchCase = False
         .MatchWholeWord = False
         .MatchWildcards = False
         .MatchSoundsLike = False
         .MatchAllWordForms = False
    End With

    Do While Selection.Find.Execute()
        If Selection.Start = Selection.Paragraphs.First.Range.Start Then
            Selection.Style = "Heading 1"
        End If

        Selection.Collapse wdCollapseEnd
    Loop

End Sub

The code below will produce a list of all styles found in a document.

Also, I get an error trying to use your "Number_List"

' Following code from: http://www.vbaexpress.com/forum/showthread.php?41125-How-to-get-all-the-applied-Paragraph-Styles-of-a-document
 Sub GetActiveStyles()
    Application.ScreenUpdating = False
    Dim RngStory As Range, oSty As Style, StrType As String, StrStyles As String
    With ActiveDocument
        For Each oSty In .Styles
            For Each RngStory In .StoryRanges
                With RngStory.Find
                    .ClearFormatting
                    .Text = ""
                    .Replacement.Text = ""
                    .Style = oSty.NameLocal
                    .Forward = True
                    .Wrap = wdFindStop
                    .Format = True
                    .Execute
                    If .Found Then
                        Select Case oSty.Type
                        Case wdStyleTypeCharacter: StrType = "Character"
                        Case wdStyleTypeList: StrType = "list"
                        Case wdStyleTypeParagraph: StrType = "Paragraph"
                        Case wdStyleTypeTable: StrType = "Table"
                        End Select
                        StrStyles = StrStyles & oSty.NameLocal & " (" & StrType & ")" & vbCr
                        Exit For
                    End If
                End With
            Next RngStory
        Next oSty
    End With
    Debug.Print StrStyles
    'MsgBox StrStyles
    Application.ScreenUpdating = True
End Sub