Как ускорить обработку макросом
ekali / 21.01.2012, 21:34/00:41
Форум:
При большом количестве объектов макросы медленно работают. Знаю, что есть способы ускорить процесс, но в справке не нашла. Только вот на форумах практические команды:
ActiveDocument.BeginCommandGroup "Scatter clones" Optimization = True EventsEnabled = False ActiveDocument.PreserveSelection = False 'код код код ActiveDocument.EndCommandGroup Optimization = False EventsEnabled = True ActiveDocument.PreserveSelection = True CorelScript.RedrawScreen
Вот как тут синтаксис понять? Если честно, я себе просто вставила эти куски и оно залетало! но прикол в том, что у меня-то код - отнюдь не про клонирование. А как правильно поменять, не знаю, даже где почитать, непонятно. В справке по VBA в Кореле эта функция BeginCommandGroup просто названа, и все, понимайте, как хотите.
Вообще то в справке есть описание с примерами. Вот например кусок:
Спасибо. В моем CorelDraw VBA Help ничего подобного близко нет.
CorelScript.BeginCommandGroup
Function BeginCommandGroup(UndoString As String) As Long
Member of CorelScript
Parameters Description
UndoString
И ни слова больше. И так про все. Работать ужасно неудобно. Где же эти справочники найти?
Нашла: надо было искать не через "слово" - F1, а задать в строке поиска, и выбрать из результатов не первый раздел, а где-то ниже, "Document.BeginCommandGroup". Там действительно есть кое-какие важные подробности.
Но такая навигация, конечно, это жесть.
На самом деле всё очень просто — ставится курсор на BeginCommandGroup в коде (или на любую другую функцию, свойство...) или в браузере объектов, и нажимается клавиша F1. И ни чего не нужно искать.
Sancho, спасибо, я именно так и ищу всегда, вот пишу же в предыдущем посте (слово -> F1). Только тут выдача абсолютно неинформативная получается. До более подробной информации по этой функции только через поиск по справке.
И еще такой вопрос - они там предупреждают о риске слета. Да, у меня так пару раз слетало, когда макрос прерывался до разморозки экрана. Надо так понимать, что в таком случае достаточно закрыть активный документ? Или весь Корел перезагрузить? А то толком не помню, там что-то вроде тогда стало и в панелях глючить... а восстанавливать ситуацию и экспериментировать что-то желания нет.
Или, допустим, вернуться в редактор и запустить разморозку (финальную часть кода) отдельно?
ekali, не знаю что за версия такая где не работает справка, у меня Х5 (sp3 + hf) и всё работает как нужно. А по поводу риска, нужно просто делать обработчик ошибок, например вот так:
Спасибо, очень прикольно. У меня X4, происхождение не помню.
Прочитайте правила портала, если ещё этого не сделали. :)