Try:
Code:
Sub Demo()
Application.ScreenUpdating = False
Dim StrOut As String
StrOut = " "
With Selection.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[A-Z]{2,}-[0-9A-Z\-]{1,}"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
.Execute
End With
Do While .Find.Found
If InStr(StrOut, " " & .Text & " ") = 0 Then StrOut = StrOut & .Text & " "
.Collapse wdCollapseEnd
.Find.Execute
Loop
.InsertAfter vbCr & Replace(Trim(StrOut), " ", ", ") & vbCr
End With
Application.ScreenUpdating = True
End Sub
With this code, each item will be listed once in the output, regardless of how often it appears in the input.