Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 702
от 09.02.2008, 05:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 279, Экспертов: 36
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 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
Комментарий оценки:
Большое спасибо. Макросы подобного рода я и сам пишу, но Ваш вариант мне нравится.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.70 от 17.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное