Hi dmarie,
You could use a macro like the following for both problems (the second one doesn't really require a macro, but it can be easily incorporated into the one that is required for the first problem).
Code:
Sub Demo()
Application.ScreenUpdating = False
Dim StrTxt As String
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
'Fix SSNs
.Text = "([0-9]{3})([0-9]{2})([0-9]{4})"
.Replacement.Text = "\1-\2-\3"
.Execute Replace:=wdReplaceAll
'Fix Date ranges
.Text = "[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}-[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}"
.Replacement.Text = ""
.Execute
End With
Do While .Find.Found
StrTxt = Format(Trim(Split(.Text, "-")(0)), "MMMM D, YYYY")
Select Case Trim(LCase(.Words.First.Previous.Previous.Words.First))
Case "between": StrTxt = StrTxt & " and "
Case "from": StrTxt = StrTxt & " to "
Case "of": StrTxt = StrTxt & " through "
End Select
StrTxt = StrTxt & Format(Trim(Split(.Text, "-")(1)), "MMMM D, YYYY")
.Text = StrTxt
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Application.ScreenUpdating = True
End Sub
You'll note that I've included a test for date ranges prefixed by 'from' - just to show how easily additional parameters can be accomodated.