Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2013, 10:49   #1
Ghost Mouse
Новичок
Джуниор
 
Регистрация: 15.11.2013
Сообщений: 1
Сообщение Задача (поиска и замены)

подскажите, пожалуйста, что можно сделать для замены в документе записей типа:

Пример : У меня есть серый Cat и большая DOG из fusion reactor возле его Clean будки

Результат : У меня есть серый Кот и большая Собака из ядерного реактора возле его чистой будки .

(Можно реализовать как нибудь быстрее через перебор всех слов , более 1000 зап обрабатываются , где то 40 сек ) , есть реализация через массив (но 'тоже тормозит , плюс придётся вручную 1000 зап (сейчас 390 зап и лагает при замене))

1-ый Вариант
Код:
Sub engtorus (sin$, sout$)
 
Selection.EndKey wdStory  
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = sin$
        .Replacement.Text = sout$
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
 
Sub Bot()
 
 engtorus "DOG", "Собака"
 engtorus "Cat", "Кот"
 engtorus "fusion reactor", "термоядерный реактор"
 engtorus "Clean", "Чистой"
2-ой Вариант

Код:
Sub qwe()
Dim str As Range
Dim FindText As Variant
Dim ReplaceText As Variant
Dim i As Long
Set str = ActiveDocument.Range
FindText = Array("DOG", "Сat ", "fusion reactor", "Clean")
ReplaceText = Array("Собака", "Кот", "термоядерный реактор", "чистой")
With str.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindsTextop
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Format = True
.MatchCase = True
For i = LBound(FindText) To UBound(FindText)
.Text = FindText(i)
.Replacement.Text = ReplaceText(i)
.Execute Replace:=wdReplaceAll
Next i
End With
End Sub
Ghost Mouse вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как настроить функцию поиска и замены alexp21 Microsoft Office Excel 1 03.04.2012 15:03
регулярные выражения для поиска и замены Елена Гох Microsoft Office Access 7 18.01.2011 19:39
Интерфейс поиска и замены текста в richTextBox delias Общие вопросы .NET 4 29.10.2010 18:36
программа поиска и замены+копирования текста 666dvg999 Общие вопросы C/C++ 4 05.10.2008 20:01
Макрос для поиска/замены Davidoff Microsoft Office Excel 1 20.01.2007 16:01