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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2013, 11:28   #1
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию Убыстрение макроса при поиске слов

Было у меня ранее в коде так:
Код:
 'проверка повторяемости слова
                With ActiveDocument.Range.Find
                    .Text = "<" & Первое_слово1 & ","    'поиск в начале слова
                    .Wrap = wdFindStop    'поиск остановить, остановит поиск по достижении конца
                    .MatchWildcards = True    'эта опция отвечает за поиск с использованием подстановочных знаков, не работает когда установлено в положение False, или её нет вообще, если установлена в положение True, тогда работает
                   Счётчик = 0
                   Do While .Execute = True
                        .Parent.Select 'выделит искомые слова
                        Счётчик = Счётчик + 1
                   Loop
                End With
                If  Счётчик = 0 Then Сгенерированные_глаголы = Сгенерированные_глаголы & Первое_слово
насоветовали для убыстрения сделать так:
Код:
 'проверка повторяемости слова
                With ActiveDocument.Range.Find
                    .Text = "<" & Первое_слово1 & ","    'поиск в начале слова
                    .Wrap = wdFindStop    'поиск остановить, остановит поиск по достижении конца
                    .MatchWildcards = True    'эта опция отвечает за поиск с использованием подстановочных знаков, не работает когда установлено в положение False, или её нет вообще, если установлена в положение True, тогда работает
                   ' Счётчик = 0
                   ' Do While .Execute = True
                        '.Parent.Select 'выделит искомые слова
                       ' Счётчик = Счётчик + 1
                    'Loop
                End With
                If Not ActiveDocument.Range.Find.Execute Then Сгенерированные_глаголы = Сгенерированные_глаголы & Первое_слово
Но это место If Not ActiveDocument.Range.Find.Execute Then
в коде не верно обсчитывается, что не так?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 26.02.2013, 12:16   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Пункт 1

Ципихович Эндрю, вот это может замедлять работу кода:
Код:
.Parent.Select 'выделит искомые слова
Нужные действия с найденным можно делать через "Parent", который представляет собой объект "Range".


Пункт 2

Если строка в переменной "Сгенерированные_глаголы" очень длинная получается, то тогда лучше формирование переменной "Сгенерированные_глаголы " разбить на две части:
  1. в одной переменной накапливается результат, например, десяти действий;
  2. затем данные из переменной заносятся в переменную "Сгенерированные_глаголы";
  3. первая переменная обнуляется и заново.

Последний раз редактировалось Скрипт; 26.02.2013 в 12:20.
Скрипт вне форума Ответить с цитированием
Старый 26.02.2013, 16:53   #3
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,043
По умолчанию

ошибочка была эта строка
Код:
'.Parent.Select 'выделит искомые слова
была закоментирована
вопрос то сейчас в том, что строка
Код:
 If Not ActiveDocument.Range.Find.Execute Then
в коде не верно обсчитывается, что не так?
и уже решён, спасибо
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при поиске по dataGridView Ёжик в тумане C# (си шарп) 1 04.06.2012 14:21
Отбор записей при поиске artemavd Общие вопросы Delphi 14 03.04.2012 10:40
Ошибочка при поиске. skytechkrutoi Общие вопросы .NET 1 20.01.2011 13:01
Вывод не нужного при поиске файлов coNsept Общие вопросы C/C++ 5 28.04.2010 19:11
Учетность регистра при поиске данных Proxx-asb Общие вопросы Delphi 4 28.05.2009 13:12