首页 文章

如何为Corel X5创建一个对象定位宏?

提问于
浏览
-1

我有堆叠的对象带到我的文档上(直接从文件夹拖动,并手动定位在第一个对象应该在的位置) . 对象的数量各不相同,所以我需要考虑到这一点的代码 . 因此,应定位物体,使每个物体之间的距离水平为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

我用google搜索了很多关于VBA的内容,但是对于这种情况我找不到足够简单的帮助 . 如果有人想到或展示如何编程,我将不胜感激,对我来说将是一个巨大的帮助!

1 回答

  • 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
    

相关问题