Вопрос № 121534: При работе в Word Microsoft Office XP после выполнения команды Replace (Ctrl+H) выдаётся сообщение о количестве произведенных замен. Каким кодом эту информацию можно получить в модуле VBA?...
Вопрос № 121.534
При работе в Word Microsoft Office XP после выполнения команды Replace (Ctrl+H) выдаётся сообщение о количестве произведенных замен. Каким кодом эту информацию можно получить в модуле VBA?
Отправлен: 04.02.2008, 05:21
Вопрос задал: SFResid (статус: Специалист)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: HookEst
Здравствуйте, SFResid!
Просто получить откуда нибудь это значение, наверное не получится, но можно вручную заменять по одному разу и подсчитать количество замен:
Option Explicit
'макрос
Sub t()
Dim sFind As String
Dim sReplace As String
sFind = InputBox("Заменить что?", , "текст для поиска")
If sFind = "" Then Exit Sub
sReplace = InputBox("Replace with?", , "replace text")
If sReplace = "" Then If MsgBox("replace '" & sFind & "' with empty text?", vbYesNo + vbQuestion) <> vbYes Then Exit Sub
MsgBox ReplaceText(sFind, sReplace) & " replacements was made"
End Sub
'непосредствено функция: заменяет в документе sFind на sReplace и возвращает кол-во произведенных замен
Function ReplaceText(ByVal sFind As String, ByVal sReplace As String) As Long
Dim rOld As Range
'сохраняем Selection, чтобы потом восстановить
Set rOld = Selection.Range
'искать будем с начала документа
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
'заменяем по одному, пока заменяется
Do While .Execute(FindText:=sFind, replacewith:=sReplace, Wrap:=wdFindContinue, Forward:=True, Replace:=wdReplaceOne)
ReplaceText = ReplaceText + 1
Loop
End With
'восстанавливаем Selection
rOld.Select
End Function
Успехов.
Ответ отправил: HookEst (статус: Практикант)
Ответ отправлен: 07.02.2008, 11:58 Оценка за ответ: 5 Комментарий оценки: Большое спасибо. Макросы подобного рода я и сам пишу, но Ваш вариант мне нравится.