View Single Post
 
Old 07-12-2018, 08:23 PM
gmayor's Avatar
gmayor gmayor is offline Windows 10 Office 2016
Expert
 
Join Date: Aug 2014
Posts: 4,137
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 ofgmayor has much to be proud of
Default

Use ranges and you don't have to open the footer, so no need then to close it. Also get into the habit of declaring your variables e.g.


Code:
Sub DateFooter()
Dim oRng As Range
Dim myDate As Long, myDate2 As Long
Dim w As Long, w1 As Long
Dim my3 As String
Dim oSection As Section
Dim oFooter As HeaderFooter

    ' get first day of the month
    myDate = DateSerial(Year(Date), Month(Date), 1)
    ' what day of the week is it - 1 = sun 2= mon ... Fri = 6
    w1 = Weekday(myDate)
    ' set second firday of the month
    w = 6 - w1 + 7 + 1
    myDate2 = DateSerial(Year(Date), Month(Date), w)
    my3 = Format(myDate2, "dddd, mmmm dd yyyy")
    ' this doesn't work current page number is always 1
    ' For i = 1 To ActiveDocument.Sections.Count
    ' With ActiveDocument.Sections(i)
    ' .Footers(wdHeaderFooterPrimary).Range.Text = My3 & String(175, " ") & "Page " & Selection.Information(wdActiveEndPageNumber) & " of " & Selection.Information(wdNumberOfPagesInDocument)
    ' End With
    ' thit works but when I get back to the document I need to close the footer and
    ' I am still left in draft mode

    For Each oSection In ActiveDocument.Sections
        For Each oFooter In oSection.Footers
            If oFooter.Exists Then
                Set oRng = oFooter.Range
                With oRng
                    .Text = my3 & Chr(175) & Chr(32) & "Page "
                    .Collapse 0
                    ActiveDocument.Fields.Add oRng, wdFieldPage, , False
                End With
                Set oRng = oFooter.Range
                With oRng
                    .Collapse 0
                    .Text = " of "
                    .Collapse 0
                    ActiveDocument.Fields.Add oRng, wdFieldNumPages, , False
                End With
            End If
        Next oFooter
    Next oSection
    Set oSection = Nothing
    Set oFooter = Nothing
    Set oRng = Nothing
End Sub
__________________
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