Добрый вечер! Подскажите пожалуйста, как решить такую задачу.
Необходимо найти в документе все цифры, содержащие в конце 50 и заменить, предварительно умножив их на 1,15 и сделать их жирным и добавить в скобках (в пересчете: ) (например: было: 210, а стало: (в пересчете: 241,5).
В объекте "Find", я использую такой поиск:
.Text = "([0-9]@[5][0])"
Замена во всём файле
Sub Main()
Dim rng As Range, fnd As Find, stri As String
'1. Создание объектов для поиска.
Set rng = ActiveDocument.Range(0, 0)
Set fnd = rng.Find
'2. Настройка поиска.
fnd.Text = "([0-9]@[5][0])"
fnd.MatchWildcards = True
fnd.Wrap = wdFindStop
'3. Поиск и замена.
Do While fnd.Execute = True
' Запись найденнего текста в переменную "stri".
' Если найдено, то rng - это будет найденный фрагмент.
stri = rng.Text
' Здесь проводите действия с переменной stri, например:
stri = stri * 1.15
' Записываете расчитанные данные обратно в найденный фрагмент.
rng.Text = "(в пересчете: " & stri & ")"
' Делаете фрагмент жирным.
rng.Font.Bold = True
' Смещение невидимого курсора вправо от найденго фрагмента, чтобы поиск
' началася после найденного фрагмента, а не в найденном фрагменте.
rng.Collapse Direction:=wdCollapseEnd
Loop
'4. Сообщение.
MsgBox "Готово.", vbInformation
End Sub
Замена в выделенном фрагменте
Sub Main()
Dim rng As Range, fnd As Find, rngSelEnd As Range, stri As String
'1. Vba-именование конца выделения.
Set rngSelEnd = Selection.Range.Duplicate
rngSelEnd.Collapse Direction:=wdCollapseEnd
'2. Создание объектов для поиска.
Set rng = Selection.Range
rng.Collapse Direction:=wdCollapseStart
Set fnd = rng.Find
'3. Настройка поиска.
fnd.Text = "([0-9]@[5][0])"
fnd.MatchWildcards = True
fnd.Wrap = wdFindStop
'4. Поиск и замена.
Do While fnd.Execute = True
' Проверка, найдено ли в пределах выделенного.
If rng.End > rngSelEnd.Start Then
Exit Do
End If
' Запись найденнего текста в переменную "stri".
' Если найдено, то rng - это будет найденный фрагмент.
stri = rng.Text
' Здесь проводите действия с переменной stri, например:
stri = stri * 1.15
' Записываете расчитанные данные обратно в найденный фрагмент.
rng.Text = "(в пересчете: " & stri & ")"
' Делаете фрагмент жирным.
rng.Font.Bold = True
' Смещение невидимого курсора вправо от найденго фрагмента, чтобы поиск
' началася после найденного фрагмента, а не в найденном фрагменте.
rng.Collapse Direction:=wdCollapseEnd
Loop
'5. Сообщение.
MsgBox "Готово.", vbInformation
End Sub
Ну просто отлично! Большое спасибо, особенно за помощь в праздник! На моем тексте все работает! Вы просто волшебник!