Обратный текст слово за словом

#vba #text #macros #ms-word

#vba #текст #макросы #ms-word

Вопрос:

Я хочу поменять местами слова в документе Word следующим образом: «Текст elpmaS» становится «Образцом текста».

Я пробовал что-то вроде этого:

 For Each word In ActiveDocument.Words
    word = StrReverse(word)
Next word
  

Однако это не работает.

Как я могу это сделать?

Ответ №1:

Когда вы используете цикл for для каждого цикла, вы не можете изменить слово, поэтому используйте цикл for:

 Dim i As Integer

For i = 1 To ActiveDocument.Words.Count Step 1

    ActiveDocument.Words(i) = StrReverse(ActiveDocument.Words(i)) amp; " "
Next i
  

Комментарии:

1. Спасибо. Как мне это сделать для выделенного текста?

Ответ №2:

 Sub ReverseSelectedWords()
    Dim i As Integer
    Dim oWords As Words
    Dim oWord As Range

    Set oWords = Selection.Range.Words

    For i = 1 To oWords.Count Step 1

        Set oWord = oWords(i)

        ''Make sure the word range doesn't include a space
        Do While oWord.Characters.Last.text = " "
            Call oWord.MoveEnd(WdUnits.wdCharacter, -1)
        Loop

        Debug.Print "'" amp; oWord.text amp; "'"
        oWord.text = StrReverse(oWord.text)

    Next i

End Sub