Catty,
For Each loops when dealing with objects and deleting is often problematic. Also before inserting watermarks you should ensure the previous ones are deleted first by adding a call to your delete macro:
Code:
Sub ScratchMacro()
'A basic Word macro coded by Greg Maxey
Dim Shp As Shape, HdFt As HeaderFooter
DeleteWatermark
With ActiveDocument
'Add the watermark To each header In the first Section
With .Sections.First
For Each HdFt In .Headers
Set Shp = HdFt.Shapes.AddTextEffect(msoTextEffect1, _
"CONFIDENTIAL", "Arial Narrow", 38, False, False, 0, 0)
With Shp
.Name = "PowerPlusWaterMarkObject" & Format(Now, "YYMMDD") & Format(HdFt.Index, "00")
.TextEffect.NormalizedHeight = False
.Line.Visible = False
.Fill.Visible = True
.Fill.Solid
.Fill.ForeColor.RGB = RGB(192, 192, 192)
.Fill.Transparency = 0.5
.Rotation = 315
.LockAspectRatio = True
.Height = InchesToPoints(3.29)
.Width = InchesToPoints(6.85)
.WrapFormat.AllowOverlap = True
.WrapFormat.Side = wdWrapNone
.WrapFormat.Type = 3
.RelativeHorizontalPosition = wdRelativeVerticalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Left = wdShapeCenter
.Top = wdShapeCenter
End With
.Range.FormattedText.ShowAll = False
Next
End With
With .ActiveWindow.View
.ShowMarkupAreaHighlight = False
.ShowComments = False
.ShowRevisionsAndComments = False
End With
.FormattingShowClear = True
End With
Set Shp = Nothing
End Sub
Sub DeleteWatermark()
Dim oSection As Section
Dim oHeader As HeaderFooter
Dim oShape As Shape
Dim lngIndex As Long
For Each oSection In ActiveDocument.Sections
For lngIndex = 1 To 3
Set oHeader = oSection.Headers(lngIndex)
For Each oShape In oHeader.Range.ShapeRange
If oShape.Type = 15 Then oShape.Delete
Next oShape
Next lngIndex
Next
oSection
End Sub