Как создать макрос позиционирования объекта для 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
Другие вопросы по тегам