А так не портит форматирование:
[vba]Код
Sub Замена()
Dim w As Range, t As String
'Первое слово в тексте
Set w = ActiveDocument.Words.First
Do Until w Is Nothing 'перебираем до конца документа
'Поскольку "рис.1а" для Ворда - три слова
'то набираем выражение постепенно
t = t & w.Text
If t Like "рис.#а" Then
'Если мы нашли искомое, заменяем последний знак в текущем обрабатываемом слове
w.Text = Mid(t, Len(t) - 1, 1) & "б"
ElseIf t <> "рис" And t <> "рис." Then
'Очень важно вовремя очищать временную переменную от "мусора"
t = ""
End If
'Переходим к следующему слову в документе
Set w = w.Next(Unit:=wdWord, Count:=1)
Loop
End Sub
[/vba]
Важно: не применяйте выражения Words(i) - очень медленно!