将Powerpoint中的形状从A点移动到B.

时间:2016-03-01 13:04:53

标签: excel vba excel-vba powerpoint-vba shapes

我是VBA的新手,我尝试做一些对我来说很简单但很难实现的事情。

背景:

我有20张幻灯片的PPT演示文稿,其中每张幻灯片有21个形状,但最后一个。每次我想添加一个新的形状,它都在第一张幻灯片上,因此我必须移动每个形状以便为新形状腾出空间。

我的问题:我发现如何使用此代码将形状移动到我想要的位置

With ActiveWindow.Selection.ShapeRange
  .Left = XXX 'change the number for desired x position
  .Top = XXX 'change the number for desired y position
End With

然而,只有当我选择所述第一形状时,这才有效。 因为我有数百种形状,所以将它们全部命名为移动它们会花费太多时间。所以我要做的就是告诉VBA选择那里的形状:

.Left = 50
.Top = 50

然后移动那里

.Left = 140
.Top = 50

这看起来很简单,但不知怎的,我无法弄清楚如何去做。 这个帖子接近我想要的但尚未完成。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将形状添加到给定的幻灯片中,从而减少移动它的需要:

' Adds a shape to a given slide or if no slide passed, to the current slide in view
' Assumes code is running in PowerPoint VBE
Sub AddShapeToSlide(Optional oSld As Slide)
  If oSld Is Nothing Then Set oSld = ActiveWindow.View.Slide
  With oSld.Shapes.AddShape(msoShapeRectangle, 140, 50, 200, 200)
    .Name = "My New Shape"
    ' Apply other formatting here
  End With
End Sub