1

Тема: Поиск и замена за один проход

Добрый день.
Допустим есть макрос прооизводящий поиск и замену два раза:
1) «Он» меняем на «Человек»,
2) «За» — на «Нет».

Sub PZ()

    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .text = "Он"
        .Replacement.text = "Человек"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .text = "За"
        .Replacement.text = "Нет"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Что нужно поменять в коде, чтобы две эти замены производились за один проход? Спасибо.

2

Re: Поиск и замена за один проход

А позвольте полюбопытствовать, зачем Вам нужно выполнить две глобальные замены за один проход?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: Поиск и замена за один проход

Это же удобно :-)
Иногда нужно делать замены (и не две, а больше) в больших файлах. Это занимает время, ресурсы. :-)

4

Re: Поиск и замена за один проход

tasword пишет:

Это же удобно :-)
Иногда нужно делать замены (и не две, а больше) в больших файлах. Это занимает время, ресурсы. :-)

tasword, тогда смотрите это:
http://wordexpert.ru/page/zamena-zhargo … tekste#cut
(слова для поиска и замены располагаются в массивах)
или Макрос пакетной замены от Александра Витера:
http://wordexpert.ru/page/makros-paketn … dra-vitera
(множество замен во множестве файлов, пары слов для поиска и замены располагаются в ячейках таблицы)

5

Re: Поиск и замена за один проход

Boris_R пишет:
tasword пишет:

Это же удобно :-)
Иногда нужно делать замены (и не две, а больше) в больших файлах. Это занимает время, ресурсы. :-)

tasword, тогда смотрите это:
http://wordexpert.ru/page/zamena-zhargo … tekste#cut
(слова для поиска и замены располагаются в массивах)
или Макрос пакетной замены от Александра Витера:
http://wordexpert.ru/page/makros-paketn … dra-vitera
(множество замен во множестве файлов, пары слов для поиска и замены располагаются в ячейках таблицы)

Благодарю, Борис!
Однако я просмотрел макрос из первой ссылки, и там, фактически, замена производится в несколько проходов (только слова поиска и замены задаются в двух массивах).
Вряд ли это даст ускорение замены, но, действительно, сокращает размер макроса.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

6

Re: Поиск и замена за один проход

Alex_Gur пишет:

Однако я просмотрел макрос из первой ссылки, и там, фактически, замена производится в несколько проходов (только слова поиска и замены задаются в двух массивах).
Вряд ли это даст ускорение замены, но, действительно, сокращает размер макроса.

Согласен, да и по второй ссылке замена производится в несколько проходов. Мне кажется, что топикстартер в первом сообщении неверно сформулировал вопрос, а из второго сообщения стало ясно, что он действительно хочет.
Вообще, при использовании настоящих регулярных выражений (не усеченной версии, которая используется в Ворде при поиске и замене с помощью подстановочных знаков) есть возможность поиска множества слов за один проход, т.к. там в паттерне поиска можно задать оператор "или", т.е. паттерн (ааа|ссс|еее)  - ищет либо "ааа" либо "ссс" либо "еее". К сожалению, в полной мере регулярками не владею, поэтому решение, в котором была бы возможность замены множества пар слов дать не могу sad

7

Re: Поиск и замена за один проход

Boris_R пишет:

Вообще, при использовании настоящих регулярных выражений (не усеченной версии, которая используется в Ворде при поиске и замене с помощью подстановочных знаков) есть возможность поиска множества слов за один проход, т.к. там в паттерне поиска можно задать оператор "или", т.е. паттерн (ааа|ссс|еее)  - ищет либо "ааа" либо "ссс" либо "еее". К сожалению, в полной мере регулярками не владею, поэтому решение, в котором была бы возможность замены множества пар слов дать не могу sad

Вот как раз оператора ИЛИ (|) в Word и не хватает. Вообще очень жаль, что в этой программе такой урезанный язык регулярных выражений. Непонятно, почему разработчики в новых версиях не исправили это.

8

Re: Поиск и замена за один проход

tasword пишет:

Вот как раз оператора ИЛИ (|) в Word и не хватает. Вообще очень жаль, что в этой программе такой урезанный язык регулярных выражений. Непонятно, почему разработчики в новых версиях не исправили это.

Настоящими регулярками в Ворд можно пользоваться через создание в макросе объекта RegExp, см.
внешняя ссылка

9

Re: Поиск и замена за один проход

Boris_R пишет:
tasword пишет:

Вот как раз оператора ИЛИ (|) в Word и не хватает. Вообще очень жаль, что в этой программе такой урезанный язык регулярных выражений. Непонятно, почему разработчики в новых версиях не исправили это.

Настоящими регулярками в Ворд можно пользоваться через создание в макросе объекта RegExp, см.
внешняя ссылка


Были бы удобные макросы с этим RegExp )

10

Re: Поиск и замена за один проход

Boris_R пишет:
tasword пишет:

Вот как раз оператора ИЛИ (|) в Word и не хватает. Вообще очень жаль, что в этой программе такой урезанный язык регулярных выражений. Непонятно, почему разработчики в новых версиях не исправили это.

Настоящими регулярками в Ворд можно пользоваться через создание в макросе объекта RegExp, см.
внешняя ссылка

Борис и tasword, было бы желательно рассмотреть поподробнее, как из Ворда вызвать объект RegExp, как его использовать и все такое...

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

11

Re: Поиск и замена за один проход

Alex_Gur пишет:

Борис и tasword, было бы желательно рассмотреть поподробнее, как из Ворда вызвать объект RegExp, как его использовать и все такое...

Alex_Gur, мы с вами здесь
http://wordexpert.ru/forum/viewtopic.php?id=2654
упоминали этот макрос:
внешняя ссылка/

Он, как я понимаю, как раз использует объект RegExp. Но этот макрос какой-то маловнятный.

Вот есть еще платный пакет макросов «Методичка»:
внешняя ссылка/
Там среди возможностей упоминаются и рег. выражения.

12

Re: Поиск и замена за один проход

tasword пишет:
Alex_Gur пишет:

Борис и tasword, было бы желательно рассмотреть поподробнее, как из Ворда вызвать объект RegExp, как его использовать и все такое...

Alex_Gur, мы с вами здесь
http://wordexpert.ru/forum/viewtopic.php?id=2654
упоминали этот макрос:
внешняя ссылка/

Он, как я понимаю, как раз использует объект RegExp. Но этот макрос какой-то маловнятный.

Согласен.

Было бы интересно увидеть хотя бы простейшие возможности реализации этого объекта. Чтобы каждый желающий смог бы воспроизвести и выполнить несложную процедуру поиска с помощью регулярных выражений.
Я тоже над этим подумаю.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

13

Re: Поиск и замена за один проход

Alex_Gur пишет:
tasword пишет:
Alex_Gur пишет:

Борис и tasword, было бы желательно рассмотреть поподробнее, как из Ворда вызвать объект RegExp, как его использовать и все такое...

Alex_Gur, мы с вами здесь
http://wordexpert.ru/forum/viewtopic.php?id=2654
упоминали этот макрос:
внешняя ссылка/

Он, как я понимаю, как раз использует объект RegExp. Но этот макрос какой-то маловнятный.

Согласен.

Было бы интересно увидеть хотя бы простейшие возможности реализации этого объекта. Чтобы каждый желающий смог бы воспроизвести и выполнить несложную процедуру поиска с помощью регулярных выражений.
Я тоже над этим подумаю.

А по ссылке Бориса:
внешняя ссылка
разве нет краткого пояснения по использованию? Я просто сам не программист, и мне судить трудно.

14

Re: Поиск и замена за один проход

tasword пишет:

А по ссылке Бориса:
внешняя ссылка
разве нет краткого пояснения по использованию? Я просто сам не программист, и мне судить трудно.

Описание вполне подробное. Но небольшой примерчик, как мне кажется, был бы весьма кстати.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

15

Re: Поиск и замена за один проход

Alex_Gur пишет:

Описание вполне подробное. Но небольшой примерчик, как мне кажется, был бы весьма кстати.

В качестве примерчика. По этой ссылке на narod.ru можно скачать Макрос мультизамены.docm:
внешняя ссылка/