我在文档上放置了堆叠的对象(直接从文件夹中拖出,并手动放置在第一个对象所在的位置)。对象的数量各不相同,因此我需要考虑到这一点的代码。因此,应定位物体,使每个物体之间的距离水平为30毫米。垂直位置不得改变。其中一个对象(堆栈的最后一个或第一个)的位置应保持不变。我知道如何只使用动作来做到这一点,但问题是所用对象的数量。数量不匹配时发生错误
我需要使用条件句吗?如何定义形状等?
这是我记录动作的方式:首先我选择了顶部物体并将其水平移动了30毫米。然后我将堆栈顶部的下一个对象添加到现有选择中。然后我将选定的物体移动了30mm。我再次选择堆栈顶部的新对象进行选择并执行运动。我这样做,直到堆栈的最后一个对象单独在其原始位置。在这种情况下,使用了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但是找不到足够简单的帮助来解决这种情况。如果有人想到或展示如何编程,我将不胜感激,对我来说将是一个巨大的帮助!
答案 0 :(得分:0)
应该是这样的:
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