![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
![]()
Почему код:
a = ActiveDocument.Words.Count For i=1 to a CurWord = ActiveDocument.Words(i).Text ... Next i значительно (раз в 10) медленнее, чем: a = ActiveDocument.Paragraphs.Count Set myRange = ActiveDocument.Range(Start:=0, End:=ActiveDocument.Paragraphs(a).R ange.End) For Each aWord In myRange.Words CurWord = aWord.Text .... Next aWord Как можно ускорить? При условии, что мне нужна произвольная выборка слов, а не последовательная
Нет нерешаемых задач - есть недостаток времени и данных!
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
![]()
Уточняю задачу.
Обработка текста по словам. Но так как Word воспринимает слово "всё-таки" как 3 (три) слова, то необходимо после произвеси изменение в словах, проанализировав всю последовательность.
Нет нерешаемых задач - есть недостаток времени и данных!
|
![]() |
![]() |
![]() |
#3 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Можно попробовать перебирать предложения, а текст предложения разбивать на слова функцией Split. В получившемся массиве слов удалять знаки препинания. Но при этом потеряется информация о положении слова в документе, хотя её можно будет восстановить по номеру слова в массиве. Как-то так.
Лучше день потерять — потом за пять минут долететь!©
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
![]() Цитата:
Хотя, у меня уже возникли соображения по этому поводу: при индексированном доступе Word заново просматривает весь документ, пересчитывая слова, при каждом обращении за словом. А при последовательном доступе он этого не делает ![]()
Нет нерешаемых задач - есть недостаток времени и данных!
|
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
![]()
Самый быстрый способ:
Код:
Свойство Count лучше вообще не использовать, даже само по себе оно очень тормозит. Попробуйте на большом документе получить ActiveDocument.Characters.Count.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
![]()
Спасибо. Попробую
![]()
Нет нерешаемых задач - есть недостаток времени и данных!
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Спасайте! Идет произвольная перезагрузка... | vilison | Безопасность, Шифрование | 30 | 02.02.2010 21:11 |
Дана строка, состоящая из нескольких слов. Найти количество слов, которые содержат хотя бы одну букву "А" | Mashaa | Помощь студентам | 13 | 09.12.2009 13:28 |
по вводу слов в массив и подсчёт введённых слов | -ushёl- | Общие вопросы C/C++ | 4 | 16.11.2009 00:45 |
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. | KAPAHDAW | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 17.02.2009 01:19 |
дается строка Edit1(произвольная) Вывести в поле Edit2 строку наоборот | RocKy | Общие вопросы Delphi | 16 | 23.07.2007 02:23 |