Further to my earlier start comments, I did some deeper research and found a set of procedures from Greg Maxey which seem to satisfy what I was looking for.
This is the code:
Public Sub UniversalFieldMacro()
Dim rngStory As Word.Range
Dim lngLink As Long
Dim oShp As Shape
lngLink = ActiveDocument.Sections(1).Headers(1).Range.StoryType
For Each rngStory In ActiveDocument.StoryRanges
'Iterate through all linked stories
Do
On Error Resume Next
'Call actionable procedure
' FieldsDeleteAll rngStory
DeleteAllSpecificFields rngStory
Select Case rngStory.StoryType
Case 6, 7, 8, 9, 10, 11
If rngStory.ShapeRange.Count > 0 Then
For Each oShp In rngStory.ShapeRange
If oShp.TextFrame.HasText Then
'Call actionable procedure
DeleteAllSpecificFields oShp.TextFrame.TextRange
End If
Next
End If
Case Else
'Do Nothing
End Select
On Error GoTo 0
'Get next linked story (if any)
Set rngStory = rngStory.NextStoryRange
Loop Until rngStory Is Nothing
Next rngStory
lbl_Exit:
Exit Sub
End Sub
Sub DeleteAllSpecificFields(ByRef oTargetRng As Range)
Dim oFld As Word.Field
For Each oFld In oTargetRng.Fields
Select Case oFld.Type
Case wdFieldFillIn
' oFld.Delete
oFld.Locked = True
Case Else
'Do nothing
End Select
Next oFld
lbl_Exit:
Exit Sub
End Sub
I made a small amount of change and instead of deleting the fields as shown I locked these and it works as originally wanted.
So, thanks, Greg for your examples.
Roderick