Solved

Macro to Find & Replace Footer after section break

Posted on 2008-10-10
3
798 Views
Last Modified: 2012-05-05
Ok, i've a very simple macro that asks for user input on various things (such as Client Name) and uses this to run a find and replace through my body text.

As part of the document i have a section Break after the 1st page, which has a footer, a section break after the second page, which has no footer and from there on in there is a consistent footer.

A simple find and replace does not check the footer and when i add the instruction WordBasic.ViewFooterOnly it only checks the 1st footer when i need it to check after the second section break...

All help appreciated!
'This is my basic user input & find and replace
 

sPrompt = "Please enter Client Name"

    sTitle = "Client"

    sDefault = "CLIENT PROPERTIES LTD"

    sClient = InputBox(sPrompt, sTitle, sDefault)

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = """CLIENT"""

        .Replacement.Text = sClient

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

    Selection.Find.Execute Replace:=wdReplaceAll
 

'This is where it should be checking the footer
 

sPrompt = "Please enter your Project Number"

    sTitle = "Project Number"

    sDefault = "Project Number"

    sPNo = InputBox(sPrompt, sTitle, sDefault)

    WordBasic.ViewFooterOnly

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = """Proj No"""

        .Replacement.Text = sPNo

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

    Selection.Find.Execute Replace:=wdReplaceAll

Open in new window

0
Comment
Question by:NAORC
  • 2
3 Comments
 
LVL 23

Expert Comment

by:irudyk
ID: 22692745
Try something like the following:
'This is my basic user input & find and replace

 

sPrompt = "Please enter Client Name"

    sTitle = "Client"

    sDefault = "CLIENT PROPERTIES LTD"

    sClient = InputBox(sPrompt, sTitle, sDefault)

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = """CLIENT"""

        .Replacement.Text = sClient

        .Forward = True

        .Wrap = wdFindContinue

        .Format = False

        .MatchCase = False

        .MatchWholeWord = False

        .MatchWildcards = False

        .MatchSoundsLike = False

        .MatchAllWordForms = False

    End With

    Selection.Find.Execute Replace:=wdReplaceAll
 
 

'This is where it should be checking the footer

Dim rng As Range

 

sPrompt = "Please enter your Project Number"

    sTitle = "Project Number"

    sDefault = "Project Number"

    sPNo = InputBox(sPrompt, sTitle, sDefault)

    For Each rng In ActiveDocument.StoryRanges

        Do

            With rng.Find

                .ClearFormatting

                .Replacement.ClearFormatting

                .Text = """Proj No"""

                .Replacement.Text = sPNo

                .Forward = True

                .Wrap = wdFindContinue

                .Format = False

                .MatchCase = False

                .MatchWholeWord = False

                .MatchWildcards = False

                .MatchSoundsLike = False

                .MatchAllWordForms = False

                .Execute Replace:=wdReplaceAll

            End With

            Set rng = rng.NextStoryRange

        Loop Until rng Is Nothing

    Next rng

Open in new window

0
 
LVL 5

Author Comment

by:NAORC
ID: 22701280
Irudyk,

Thanks - Not to sound ungrateful, but while this solves the problem it takes about 2 minutes to run that section of the code. It's only a 14 page document (Office 2007). Any ideas on how it can be sped up at all?

Thanks!
0
 
LVL 23

Accepted Solution

by:
irudyk earned 125 total points
ID: 22702321
Hmm, okay well try modifying that section of the code to be:
    For Each rng In ActiveDocument.StoryRanges

        Select Case rng.Information(wdHeaderFooterType)

            Case 2, 3, 5    'range is in a footer section

                Do

                    With rng.Find

                        .ClearFormatting

                        .Replacement.ClearFormatting

                        .Text = """Proj No"""

                        .Replacement.Text = sPNo

                        .Forward = True

                        .Wrap = wdFindContinue

                        .Format = False

                        .MatchCase = False

                        .MatchWholeWord = False

                        .MatchWildcards = False

                        .MatchSoundsLike = False

                        .MatchAllWordForms = False

                        .Execute Replace:=wdReplaceAll

                    End With

                    Set rng = rng.NextStoryRange

                Loop Until rng Is Nothing

            Case Else

        End Select

    Next rng

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
vb6 programatically bring window to front 8 63
Word 2016 - Menu Choice for Synchronous Scrolling Missing 29 51
Microsoft Excel Digital Signature 2 48
Word - Access 6 55
Like many others, we try and discourage users from printing documents unnecessarily and instead send or share them electronically. However, this doesn't always work and documents are still printed. With this simple solution, if the user tries to …
There is a feature provided by MS Word that lets you create an Table of Contents for your Word document automatically. To use this feature for other documents there are two steps involved,   1.  Prepare your document for a table of contents (he…
This video shows and describes the main difference between both orientations in Microsoft Word. Viewers will understand when to use each orientation and how to get the most out of them.
This Micro Tutorial well show you how to find and replace special characters in Microsoft Word. This is similar to carriage returns to convert columns of values from Microsoft Excel into comma separated lists.

919 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now