Как создать макрос позиционирования объекта для Corel X5?
Я сложил объекты, принесенные в мой документ (перетащил из папки напрямую и поместил вручную на место, где должен быть первый объект). Количество объектов варьируется, поэтому мне нужен код, который учитывает это. В результате объекты должны быть расположены так, чтобы расстояние между каждым объектом было 30 мм по горизонтали. Вертикальное положение не должно меняться. Положение одного из объектов (последнего или первого в стеке) должно оставаться на месте. Я знаю, как это сделать, просто используя действия, но проблема в количестве используемых объектов. Ошибка происходит, когда количества не совпадают.
Нужно ли использовать условные предложения? Как определить формы и т. Д.?
Вот как я записал действия: сначала я выбрал верхний объект и переместил его на 30 мм по горизонтали. Затем я добавил следующий объект поверх стека в существующий выбор. Затем я переместил выбранные объекты на 30 мм. И снова я выбрал новый объект поверх стека для выделения и выполнил движение. Я делал это до тех пор, пока последний объект стеков не остался на прежнем месте. В этом случае было использовано 8 объектов. Вот код, который был создан с помощью действий:
Sub positioning()
' Recorded 16.2.2015
ActiveLayer.Shapes(1).Move 1.181102, 0#
ActiveDocument.CreateShapeRangeFromArray(ActiveLayer.Shapes(2), ActiveLayer.Shapes(1)).Move 1.181102, 0#
ActiveLayer.Shapes(3).AddToSelection
ActiveSelection.Move 1.181102, 0#
ActiveLayer.Shapes(4).AddToSelection
ActiveSelection.Move 1.181102, 0#
ActiveLayer.Shapes(5).AddToSelection
ActiveSelection.Move 1.181102, 0#
ActiveLayer.Shapes(6).AddToSelection
ActiveSelection.Move 1.181102, 0#
ActiveLayer.Shapes(7).AddToSelection
ActiveSelection.Move 1.181102, 0#
End Sub
Я много гуглил и читал о VBA, но не смог найти достаточно простой помощи для такого рода случаев. Я был бы признателен, если бы кто-то подумал или показал, как программировать это, мне бы очень помогло!
1 ответ
Должно быть так:
Set sr = ActivePage.SelectableShapes.All
For i = 1 to sr.count
sr(i).move (1.181102 * i), 0#
Next i
и, конечно, вы должны разместить каждый sr(i)
по положению ссылки сначала:)
как это:
sr(i).positionX = 0
sr(i).positionY = 0