[CDR 2024] Помогите подправить макрос

NemoSUN

Топикстартер
15 лет на форуме
Сообщения
237
Реакции
0
Макрос берёт копию выделенного и проставляет на всех открытых страницах. В X16 данный макрос работает без проблем. В 2024 макрос вставляет копию на правой стороне листа посередине. Если разблокировать слой вручную и вручную вставить копию, то всё нормально копируется и без вопросов. Если работает макрос, то Corel начинает вдобавок спрашивать про вставку и слежение за стилями.

Код:
Sub CopyLogo()
Dim d As Document
Dim s As Shape
Dim Lg As Layer
Set s = ActiveShape

For Each d In Application.Documents
    For Each Lg In d.ActivePage.Layers
        If Lg.Name = "Logo" Then
            Lg.Activate
            d.ActiveLayer.Editable = True
            Lg.Delete
            d.ActivePage.CreateLayer ("Logo")
            d.ActiveLayer.Paste
            d.ActiveLayer.Editable = False
            d.Save
            d.ActivePage.Layers("General").Activate
        End If
    Next
Next

End Sub
 
Ваша ошибка в том, что вы создаете и удаляете слои, двигаясь в цикле по активным слоям. Это как тащить себя из болота за волосы или рубить сук, на которых сидишь.
 
Ваша ошибка в том, что вы создаете и удаляете слои, двигаясь в цикле по активным слоям. Это как тащить себя из болота за волосы или рубить сук, на которых сидишь.
Не спорю. Но в 16м то работает. Значит логика макроса работоспособна. Я так понимаю.
 
Не спорю. Но в 16м то работает. Значит логика макроса работоспособна. Я так понимаю.
Логика макроса шита на живую нитку, в 16 версии работает, скорее, вопреки, чем благодаря. Если честно, я даже не пойму что именно такое странное вы хотите реализовать этими удалениями-добавлениями слоев с копипастом в никуда? Это, часом, не очередная жертва вайбкодинга или просто нежизнеспособный гибрид нейросети и автозаписи?
 
Логика макроса шита на живую нитку, в 16 версии работает, скорее, вопреки, чем благодаря. Если честно, я даже не пойму что именно такое странное вы хотите реализовать этими удалениями-добавлениями слоев с копипастом в никуда? Это, часом, не очередная жертва вайбкодинга или просто нежизнеспособный гибрид нейросети и автозаписи?
Мне надо шапку страницы на слое Logo копировать на все остальные открытые страницы. Можно, конечно, вручную. Но у меня не 1 и не 2 страницы. Таким образом, я радектирую один раз шапку и размножаю её потом на пару сотен страниц. И чтобы не попортить впопыхах случайно слой, его надо бы блокировать после изменения.
 
А вот эта строка зачем? И зачем вы новый слой создаете да еще и в цикле перебора? Зачем документ в этом цикле сейвите? Я сильно удивлен что код рабочий хотя бы в 16 '8()'