Как исправить проблему с работой Selection.Find в макросах Word?

Как переписать данный код, чтобы он работал в новых версиях Word, заменяя переносы строк на пробелы только в выделенном тексте?
  • 2 ноября 2023 г. 11:48
Ответы на вопрос 2
Для исправления проблемы с работой Selection.Find в макросах Word можно использовать следующий код:

Sub ReplaceLineBreaksWithSpaces()
    ' Проверяем, есть ли что-то выделенное
    If Selection.Type = wdSelectionIP Then
        MsgBox "Пожалуйста, выделите текст и повторите попытку.", vbExclamation, "Ошибка"
        Exit Sub
    End If

    ' Сохраняем начальные позиции выделения
    Dim startRange As Integer
    Dim endRange As Integer
    startRange = Selection.Start
    endRange = Selection.End

    ' Определяем параметры поиска и замены
    Dim findText As String
    Dim replaceText As String
    findText = "^13" ' Поиск переноса строки
    replaceText = " " ' Замена на пробел

    ' Устанавливаем способ поиска и замены
    With Selection.Find
        .ClearFormatting
        .Text = findText
        .Replacement.Text = replaceText
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With

    ' Заменяем переносы строк на пробелы
    Selection.Find.Execute Replace:=wdReplaceAll

    ' Восстанавливаем выделение
    Selection.SetRange startRange, endRange
End Sub

Приведенный выше код работает только с выделенным текстом и заменяет все переносы строк на пробелы.
Совет по использованию свойства .Wrap в новом Word: вместо значения wdFindContinue используйте значение 0.
Похожие вопросы