Замена символа в конце строки приводит к падению Word - PullRequest
0 голосов
/ 17 января 2020

Я спросил , как заменить пробел в конце строки неразрывным пробелом, если предыдущий символ - ди git во всем документе.

Приведенный ниже код делает мое слово cra sh, когда оно выделяет последнюю строку второй последней страницы документа.

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

    Selection.MoveDown wdLine, 1
    Selection.Expand wdLine
Wend

1 Ответ

0 голосов
/ 17 января 2020

Я подозреваю, что у вас есть ваш документ в режиме макета печати. Переход на черновой просмотр позволил мне запускать код (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...