![]() |
CTRL Z для VBA, или оптимизация работы макроса CorelDrawИногда мало создать макрос для CorelDraw, иногда требуется его оптимизировать. Множество объектов широкоформатной печати, групп объектов, разгруппировка их, копирование – обработка этого занимает много времени. Для одного макроса потребовалось написать функцию, отменяющую результаты копирования объектов. Изначально я сделал так: просто пробегал в цикле по всем объектам на листе и если staticId их не совпадал с первоначальным, то удалял. Такой подход работает, но занимает много времени. Проще воспользоваться отменой предыдущего действия – что-то типа программный аналог CTRL Z для VBA. Для этого сначала надо задать выполняемые действия заключить в особую конструкцию BeginCommandGroup – EndCommandGroup. Все, что будет выполняться между данными ключевыми словами является одним методом и может быть отменено за один раз. Пример: Dim d As Document Dim s As Shape Dim i As Integer Set d = ActiveDocument d.BeginCommandGroup Set s = d.ActiveLayer.CreateEllipse2(0, 0, 5) s.Fill.UniformColor.RGBAssign 0, 255, 0 For i = 1 To 10 s.Duplicate i * 10, i * 10 Next i d.EndCommandGroupЗдесь мы создаем зеленый круг и дублируем его 9 раз вверх по диагонали. ![]() Без метода BeginCommandGroup нам придется 10 раз нажать CTRL + Z, чтобы отменить действие по созданию кругов, а в нашем случае всего один раз. Программно же это делается так: Dim App As Document Set App = ActiveDocument App.UndoКак видите, все просто. Если вам требуется помощь по макросам VBA CorelDraw, то за небольшую плату я вам помогу. Пишите. ![]() Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда. ![]() Читайте также:
|
Мои услуги
|
© upread.ru 2013-2022 При перепечатке активная ссылка на сайт обязательна. |