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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2020, 18:39   #1
Ecosasha
Форумчанин
 
Регистрация: 22.05.2009
Сообщений: 248
По умолчанию Как ускорить обращение к свойствам 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, 11:28   #2
Борис_Р
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 26
По умолчанию

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

Оптимизация перебора параграфов (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
Это страничка с сайта участника нашего форума с ником Вождь
На странице содержится масса другой полезной информации
Борис_Р вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка 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