Well, if the document contains mixed cases and you only want to change those ranges, you could use a Find/Replace macro, but such a macro could be simpler and faster than yours:
Code:
Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
With .Find
.ClearFormatting
.Text = ""
.Font.AllCaps = True
.Forward = True
.MatchWildcards = False
.Wrap = wdFindStop
.Execute
End With
Do While .Find.Found = True
.Case = wdUpperCase
.Find.Execute
Loop
End With
Application.ScreenUpdating = True
End Sub