Форум по VBA, Excel и Word

Word => Макросы в Word => Тема начата: Nanobot от 27 февраля 2018, 17:00

Название: Word VBA: Установка курсора после искомого слова с помощью макроса
Отправлено: Nanobot от 27 февраля 2018, 17:00
Добрый день! Подскажите пожалуйста, как с помощью VBA переместить курсор после определенного слова. Пробовал делать так, но ничего не выходит:

ActiveDocument.Content.MoveEndUntil Cset:="Слово", Count:=wdForward
Название: Re: Word VBA: Установка курсора после искомого слова с помощью макроса
Отправлено: Администратор от 27 февраля 2018, 17:09
Замечания по вашему коду.

Замечание 1

Здесь:
ActiveDocument.Content.MoveEndUntil Cset:="Слово", Count:=wdForward

Cset - это один или несколько символов, которые не имеют между собой никакой связи.
Метод "MoveEndUntil" делает так, используя параметр "Cset". Метод "MoveEndUntil" берёт символ, который находится справа от конца и смотрит, есть ли этот символ в параметре "Cset". То есть смотрит не всё слово в параметре "Cset", а каждый символ отдельно. Если справа есть буква "С", то остановка. Если справа есть символ "л", то остановка и т.д. до последней буквы "о".


Замечание 2

ActiveDocument.Content - это весь текст файла. Вы хотите двигать конец файла вперёд (Count:=wdForward), но двигать некуда: уже упёрлись в конец.
Название: Re: Word VBA: Установка курсора после искомого слова с помощью макроса
Отправлено: Администратор от 27 февраля 2018, 17:17
Вот так можно поставить курсор после заданного слова:

Sub макрос()

    With ActiveDocument.Range.find
        .Text = "Слово"
        If .Execute = True Then
            .Parent.Collapse Direction:=wdCollapseEnd
            .Parent.Select
        End If
    End With

End Sub
Название: Re: Word VBA: Установка курсора после искомого слова с помощью макроса
Отправлено: Nanobot от 27 февраля 2018, 17:19
Спасибо большое! Все работает!