Consulting

Results 1 to 3 of 3

Thread: Search an expression (code) and turn the whole line into heading

  1. #1

    Search an expression (code) and turn the whole line into heading

    Hi, I look for the correct Macro Code in order to search into the whole document for a certain code and turn the whole line into heading 6
    I precise that the line containing the code can be in any format (heading/normal etc...)
    This is the code I wrote and obviously doesn't work:

    Sub head6_to_heading()
        Dim doc As Word.Document
        Dim rng As Word.Range
        Set doc = ActiveDocument
        Set rng = doc.Content
        With rng.Find
             .Text = "(head-"
             .MatchCase = False
             .MatchWholeWord = False
             .Replacement.Style = doc.Styles("Heading 6").ParagraphFormat
             .Wrap = wdFindStop
        End With
    End Sub
    Thanks by advance
    Last edited by Aussiebear; 08-12-2024 at 11:40 AM. Reason: Added code tags to supplied code

  2. #2
    Hello, you can try this code: geometry dash scratch
    Sub head6_to_heading()
        Dim doc As Word.Document
        Dim rng As Word.Range
        Set doc = ActiveDocument
        Set rng = doc.Content
        With rng.Find
            .Text = "(head-"
            .MatchCase = False
            .MatchWholeWord = False
            .Wrap = wdFindStop
            Do While .Execute
                rng.Paragraphs(1).Range.Style = doc.Styles("Heading 6")
            Loop
        End With
    End Sub
    Last edited by ruthburks; 02-04-2024 at 06:02 PM.

  3. #3
    The issue with your code is that Find only searches for the complete text at once. Here's an improved macro that iterates through lines and checks for the code:
    Sub Head6_To_Heading()
        Dim doc As Word.Document
        Dim rng As Word.Range
        Dim para As Word.Paragraph
        Dim foundText As String
        Set doc = ActiveDocument
        foundText = "(head-"  ' Code to search for
        For Each para In doc.Paragraphs
             ' Check if line contains the code
             If InStr(para.Text, foundText) > 0 Then
                 Set rng = para.Range
                 ' Apply Heading 6 style
                 rng.Style = doc.Styles("Heading 6")
                 Exit For ' Stop after finding the first occurrence (modify if needed)
            End If
        Next para
    End Sub
    Last edited by Aussiebear; 08-12-2024 at 11:39 AM.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •