I'm going to assume that by "simplify" you mean "improve performance", as I suspect this is going to be horrendously slow.
I would avoid getting all the words by using Find. Instead of:
Do While r.Find.Execute(findtext:="<*>", MatchWildcards:=True, Wrap:=wdFindStop) = True
...
Loop
I think you should use:
Dim w as Word
For each w In ActiveDocument.Words
...
Next