Я подозреваю, что у вас есть ваш документ в режиме макета печати. Переход на черновой просмотр позволил мне запускать код (O365).
Отключение обновления экрана поможет предотвратить мигание экрана и повысить производительность.
Поскольку строки имеют неодинаковую длину, вам также необходимо свернуть выделение перед перемещением вниз по строке, в противном случае некоторые строки будут пропущены.
Sub AddNonBreakingSpace()
Application.ScreenUpdating = False
'store current view type so it can be restored later
Dim viewType As WdViewType
viewType = ActiveWindow.View.Type
'change to Draft view to prevent crashing
ActiveWindow.View.Type = wdNormalView
Dim myRange As Range
Set myRange = ActiveDocument.Range(ActiveDocument.Range.Start, ActiveDocument.Range.Start)
myRange.Select
Selection.Expand wdLine
While Selection.End < ActiveDocument.Range.End
If Right(Selection.Text, 1) = " " And IsNumeric(Left(Selection.Words.Last, 1)) = True Then
Selection.Characters.Last = Chr(160)
End If
'collapse selection to avoid missing any lines
Selection.Collapse wdCollapseStart
Selection.MoveDown wdLine, 1
Selection.Expand wdLine
Wend
'restore original view
ActiveWindow.View.Type = viewType
Application.ScreenUpdating = True
End Sub