Я пользуюсь примерно таким макросом:
Код:
Sub ObjectReplacer()
Dim s As Shape, p As ShapeRange, ss As ShapeRange, ref
ActiveDocument.BeginCommandGroup "ObjectReplacer"
Optimization = True
EventsEnabled = False
ActiveDocument.SaveSettings
ActiveDocument.PreserveSelection = False
ref = ActiveDocument.ReferencePoint
ActiveDocument.ReferencePoint = cdrCenter
Set ss = ActiveSelection.Shapes.All
Set p = ActiveLayer.PasteEx
ppx# = p.PositionX
ppy# = p.PositionY
For Each s In ss 'ActiveDocument.Selection.Shapes
'p.SizeHeight = s.SizeHeight
'p.SizeWidth = s.SizeWidth
p.Duplicate(s.PositionX - ppx, s.PositionY - ppy).OrderBackOf s
Next
p.Delete
ss.Delete
ActiveDocument.ReferencePoint = ref
ActiveDocument.PreserveSelection = True
ActiveDocument.RestoreSettings
EventsEnabled = True
Optimization = False
ActiveDocument.EndCommandGroup
ActiveWindow.Refresh
Application.Refresh
End Sub
Макрос меняет выделенные объекты на заранее скопированный объект. Можно сделать вариант не с копированием, а с кликом объекта для замены.
Если раскомментируете пару строк, то новый объект будет брать размер заменяемого, можете сделать копию макроса с раскомментированными строками, ещё чего-то нафантазировать.
PS. Найденный Вами скрипт будет работать во всех версиях Корела с 7 по Х6, надо только отредактировать строку CorelDRAW.Automation.8 заменив цифру на номер версии. Для версий с "Х" вместо "Х" ставите единичку. Сам скрипт будет работать гораздо быстрее если заменить многократную вставку на дублирование объекта, как в макросе выше. Начиная с X7 поддержка CorelSCRIPT была вырезана из программы.