Fred
Based on your update, you really don't need a macro at all. You can use
Edit>Replace>More>Use Wildcards.
Type ,(?) in the find what field
Type "\1 in the replace with field
Click replace all (Of course always have a backup

)
For more on Find and Replace, see:
http://www.gmayor.com/replace_using_wildcards.htm
For your follow-on question you will have to accept that while I am not a
beginnner neither am I a Titan.
I have monkeyed around with Find and Replace code to the point of sweeping
up clumps of hair off the floor in some of my more "quiet moments." Here is
the fruit of my madness:
'In each example, collapse the range to the end of the found term each time.
'In each example, Wrap is set to wdFindStop
'This prevents a circular loop
Sub ScratchMacro1()
Dim rngstory As Word.Range
Set rngstory = ActiveDocument.Range
With rngstory.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWildcards = False
.MatchWholeWord = True
.Wrap = wdFindStop
.Text = "Apples"
'Don't bother with .Replacement method just redefine the found range
While .Execute
rngstory.Text = .Text
rngstory.Font.Bold = True
rngstory.Collapse Direction:=wdCollapseEnd
ActiveDocument.Indexes.MarkEntry Range:=rngstory, Entry:=.Text
Wend
End With
End Sub
Sub ScratchMacro2()
Dim rngstory As Word.Range
Set rngstory = ActiveDocument.Range
With rngstory.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWildcards = False
.MatchWholeWord = True
.Wrap = wdFindStop
.Text = "Apples"
.Replacement.Text = .Text
.Replacement.Font.Bold = True
'Loop while found and perform if found (not very clean)
Do
.Execute Replace:=wdReplaceOne
rngstory.Collapse Direction:=wdCollapseEnd
If .Found Then
ActiveDocument.Indexes.MarkEntry _
Range:=rngstory, Entry:=.Text
End If
Loop While .Found
End With
End Sub
Sub ScratchMacro3()
Dim rngstory As Word.Range
Set rngstory = ActiveDocument.Range
With rngstory.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWildcards = False
.MatchWholeWord = True
.Wrap = wdFindStop
.Text = "Apples"
.Replacement.Text = .Text
.Replacement.Font.Bold = True
'Find once then enter the loop and perform while found
.Execute Replace:=wdReplaceOne
Do While .Found
rngstory.Collapse Direction:=wdCollapseEnd
ActiveDocument.Indexes.MarkEntry _
Range:=rngstory, Entry:=.Text
.Execute Replace:=wdReplaceOne
Loop
End With
End Sub
Sub DemonstrationMacro()
Dim rngstory As Word.Range
'ReplaceAll. Word finds all intances of the .find.text
'and replaces with the replacement text globally as determined
'by .Wrap in fell swoop.
Set rngstory = ActiveDocument.Range
With rngstory.Find
.ClearFormatting
.Replacement.ClearFormatting
'.Wrap = wdFindContinue or wdFindStop doesn't matter
.MatchWholeWord = True
.Wrap = wdFindContinue
.Text = "apples"
.Replacement.Text = "peaches"
.Execute Replace:=wdReplaceAll
End With
'ReplaceOne. In this example .Execute finds and "replaces" the first
'instance of the .find.text. Then enters a Do Loop. The found range
'bounds the found text. The found text and .Find.Text are different.
Set rngstory = ActiveDocument.Range
With rngstory.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWholeWord = True
'.Wrap = wdFindStop 'If set routine only finds the first
'instance of .Find.Text
.Wrap = wdFindContinue
.Text = "peaches"
.Replacement.Text = "pears"
.Execute Replace:=wdReplaceOne
Do While .Found
rngstory.Select
'As you can see from the selection the .Find.Text "peaches"
'is no longer in the found range. The next .Execute will
'search from the start of the found range forward looking for
'the next intance of .Find.Text. If wdFindStop is set,
'.Execute searches only the found range and will return False.
.Execute Replace:=wdReplaceOne
Loop
End With
'ReplaceOne. In this example .Execute finds and "alters" the first
'instance of the .find.text. Then enters a Do Loop. The text in the
'found range is the same as the .Find.Text. You must use both
'.Wrap and a line of code to collapse the found range to prevent a
'circular loop
Set rngstory = ActiveDocument.Range
With rngstory.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWholeWord = True
.Wrap = wdFindStop 'Prevents a circular loop
'.Wrap = wdFindContinue 'Will cause a circular loop
.Text = "pears"
.Replacement.Text = "pears"
.Replacement.Font.Bold = True
.Execute Replace:=wdReplaceOne
Do While .Found
rngstory.Select
'As you can see from the selection the .Find.Text "pears"
'is in the found range. Without additional code, the
'next .Execute searches from the start of the found range forward.
'The .Find.Text is immediately found and a circular loop is created.
rngstory.Collapse Direction:=wdCollapseEnd
'Collapsing the found range moves the next .Execute starting point
'past the point causing the cicular loop. The .Execute will search
'the range of text from the collapse point to the end of the
'document determined by .Wrap = wdFindStop
rngstory.Select
.Execute Replace:=wdReplaceOne
'It should be clear that since the .Find.Text is only altered and
'"not changed" using .Wrap = wdFindContinue would also result in
'a cicular loop.
Loop
End With
'The next few examples don't use the Replace option at all. Instead
'the found range is processed directly with each .Execute. .Execute
'without differs 'from .Execute Replace in that the following search
'is perfromed from the end of the previous found range
Set rngstory = ActiveDocument.Range
With rngstory.Find
.ClearFormatting
.Replacement.ClearFormatting
.MatchWholeWord = True
'.Wrap = wdFindContinue 'Causes circular loop will occur because the
'.Find.Text is altered but not changed
.Wrap = wdFindStop
.Text = "pears"
While .Execute
rngstory.Font.Bold = False
rngstory.Select
'The next .Execute will automatically collapse the search range
'to the end of the found range. It just does

Wend
End With
'Here the .Find.Text is changed.
Set rngstory = ActiveDocument.Range
With rngstory.Find
.ClearFormatting
'Wrap can be either
'.Wrap = wdFindStop
'.Wrap = wdFindContinue
.Replacement.ClearFormatting
.MatchWholeWord = True
.Wrap = wdFindContinue
.Text = "pears"
While .Execute
rngstory.Text = "apples"
Wend
End With
End Sub