【问题标题】:Move a shape in Powerpoint from point A to B将 Powerpoint 中的形状从 A 点移动到 B
【发布时间】:2016-06-13 22:04:57
【问题描述】:

我是 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

这看起来很简单,但不知何故我不知道该怎么做。 这个线程接近我想要的,但还不是。

提前谢谢你。

【问题讨论】:

  • 我想我明白了。哇,真快。 [code] If .Type = msoAutoShape _ And .Left = 50 _ And .Top = 50 Then .Left = 140 .Top = 50 [/code]

标签: vba excel powerpoint shapes


【解决方案1】:

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

' 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

【讨论】:

  • 这是我用来创建新形状的。但由于它应该取代已经存在的一个形状,我需要先移动旧的。示例:A B C D E F G 我想创建一个新形状,我将把它放在 A 当前所在的位置。所以我的目标是移动 G,然后将 F 移动到 G 所在的位置,E 移动到 F 所在的位置等等,然后将 A 移动到 B 所在的位置。然后添加新形状。我设法用我在第一篇文章中的评论中的代码来做到这一点。不过还是谢谢啦!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多