Возможно, это просто, но я не могу заставить его работать.Word VBA: как выбрать найденный текст, а не где находится курсор
Мне нужно выполнить поиск по моему документу, найти слова, содержащие строку «alog» и добавить «ue». Например, «каталоги» -> «каталоги».
Вышеуказанное работает отлично, но я не могу заставить следующий бит работать: если найденная строка уже имеет «ue» после «log», я не хочу добавлять еще «ue».
Подпрограмма, доступная из макроса, находится ниже. Я попытался добавить следующие строки в часть «while execute», но «выбор» всегда оказывается словом, в котором находится курсор.
With Selection
.Expand unit:=wdWord
End With
Как я) выбрать содержимое найденного диапазона и б) расширить этот новый выбор двумя персонажами, чтобы увидеть, если эти два символа 'уе?
Большое спасибо.
Sub do_replace2(old_text As String, new_text As String, Count_changes As Integer)
' Replaces 'log' with 'logue'
' Ignores paragraphs in styles beginning with 'Question'
Dim rg As Range
Set rg = ActiveDocument.Range
With rg.Find
.Text = old_text
While .Execute
If Left(rg.Paragraphs(1).Style, 8) <> "Question" Then
rg.Text = new_text
With ActiveDocument.Comments.Add(rg, "Changed from '" & old_text & "'")
.Initial = "-logs"
.Author = "-logs"
End With
Count_changes = Count_changes + 1
End If
rg.Collapse wdCollapseEnd
Wend
End With
End Sub
Большое спасибо Коминтерне. Отлично. – hmm
Спасибо, Коминтерн; как я сказал, конец + 2 отлично работает, дает мне начало диапазона (скажем) 735 и конец 737 с строкой в нем. Но если я делаю .wdcollapsestart и .start + 5, начало и конец диапазона одинаковы, а строка равна нулю. Почему «запуск» не работает так же, как «конец»? – hmm
Еще одно обновление: когда я это делаю: test.Collapse wdCollapseStart test.Start = test.Start - 5 он отлично работает. Разве вы не можете «начать + n»? – hmm