View Single Post
 
Old 06-18-2017, 11:50 PM
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

OK. In that case the following function will do that. The function is written to work as a user defined process with http://www.gmayor.com/document_batch_processes.htm which will handle the folders/documents, or you can call it from your own document selection process.

Basically it replaces any (or no) header and footer with the autotext entries from the normal template called @header and @footer, that you said you have created.

If you use the batch processor, ensure that you test it first on a single document to ensure that the autotexts do indeed produce the required results, before processing all the documents in a folder.

Code:
Function MyHeader(oDoc As Document)
Dim oSection As Section
Dim oHeader As HeaderFooter
Dim oFooter As HeaderFooter
Dim strTemplate As String
Dim orng As Range
    strTemplate = Application.Options.DefaultFilePath(wdUserTemplatesPath)
    strTemplate = strTemplate & "\Normal.dotm"

    On Error GoTo err_Handler
    For Each oSection In oDoc.Sections
        For Each oHeader In oSection.Headers
            If oHeader.Exists Then
                Set orng = oHeader.Range
                orng.Text = ""
                Application.Templates _
                        (strTemplate).AutoTextEntries("@header").Insert Where:=orng, _
                                                                        RichText:=True
            End If
        Next oHeader
        For Each oFooter In oSection.Footers
            If oFooter.Exists Then
                Set orng = oFooter.Range
                orng.Text = ""
                Application.Templates _
                        (strTemplate).AutoTextEntries("@footer").Insert Where:=orng, _
                                                                        RichText:=True
            End If
        Next oFooter
    Next oSection
    MyHeader = True
lbl_Exit:
    Exit Function
err_Handler:
    MyHeader = False
    Resume 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