我是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
这看起来很简单,但不知怎的,我无法弄清楚如何去做。 这个帖子接近我想要的但尚未完成。
提前谢谢。
答案 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