Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 04.01.2020, 19:39   #1
Ecosasha
Форумчанин
 
Регистрация: 22.05.2009
Сообщений: 239
По умолчанию Как ускорить обращение к свойствам ActiveDocument.Paragraphs в цикле?

Сравниваю в цикле несколько свойств ActiveDocument.Paragraphs, около 5-6, например ActiveDocument.Paragraphs(i).Range. Font.Size. При большом количестве абзацев долгое выполнение.
Отключал Application.ScreenUpdating = False, на скорость выполнения не повлияло.
Пробовал
Dim NewPar As Paragraphs
Set NewPar = ActiveDocument.Paragraphs
И в цикле прописывать NewPar(i).Range.Font.Size, но тоже нет разницы

Есть ли какой-то метод или свойство, чтобы прописать для сравнения именно шрифт, кегль и интервал для сравнения, без обращения к ним, как выше писал. Например, как в этом псевдокоде, что

If NewPar(1).Range (Font.Size:=14, Font.Name:='Calibri')= NewPar(i).Range Then
MsgBox "Абзац, как и первый, имеет оформление Calibri 14"
End If

Или какие-то идеи для ускорения процесса?
Ecosasha вне форума Ответить с цитированием
Старый 01.02.2020, 12:28   #2
Борис_Р
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 23
По умолчанию

Может быть поможет (сам не проверял)

Оптимизация перебора параграфов (Paragraph) и т.п.:
Медленный способ:
Код:
Dim P As Paragraph
For Each P In ActiveDocument.Paragraphs
Next P
Средний способ:
Код:
Set P = ActiveDocument.Paragraphs.First
Do
    Set P = P.Next
Loop While Not (P Is Nothing)
Быстрый способ:
Код:
Dim R As Range
Set R = ActiveDocument.Range(0, 0)
Do While R.Move(Unit:=wdParagraph) = 1
    Set P = R.Paragraphs.First
Loop

Взято отсюда:
http://mtdmacro.ru/memo.html
Это страничка с сайта участника нашего форума с ником Вождь
На странице содержится масса другой полезной информации
Борис_Р вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка 424 на строке с ActiveDocument.ReadOnly ? Snekich Microsoft Office Excel 4 09.02.2012 13:40
Обращение к унаследованным свойствам внутри класса t2skler Общие вопросы C/C++ 8 13.01.2012 21:24
обращение к именам компонентов в цикле JK0 Помощь студентам 7 23.09.2010 14:10
ActiveDocument.Words(1).Characters( 3) chugo Microsoft Office Word 2 07.07.2010 13:42
Программное обращение к свойствам файлов и их изменение lemonhead Общие вопросы Delphi 1 24.07.2008 10:20


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS