PPT中的VBA调整大小/位置形状不再起作用

时间:2018-12-14 13:38:07

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

我有一些旧代码,我打算将其用于更广泛的用途,而不是先前的特定用途。我有一个Powerpoint,我想将特定的图像文件粘贴到其中,创建一个新的幻灯片,然后重复直到A列中的所有变量名都完成。它在特定的文件位置中找到图像名称,并根据变量名值的左侧,变量名值(A列)和变量名值的右侧来构建图像名。例如(“设备”“ 23”“用于通用产品线”)。

找到此图像名称后,它将获取该图像并将其插入到幻灯片上,将其调整大小并放置在左侧,然后找到另一个比较图像,将其放置在同一张幻灯片上并调整大小并将其放置在右侧。由于某些原因,调整大小和定位不再起作用。由于某种原因,似乎图像没有被视为形状。我认为第一个图像是来自先前实验的shape(2),因为幻灯片上有一些剪贴画可算作形状。出于相同的原因,我当时认为shape(3)是图像2。附带的代码是宏。有没有人看到它会在此时失败的原因?

spread

1 个答案:

答案 0 :(得分:1)

假设您想要的形状是幻灯片上的第n个形状不是一个好主意,并且就您而言,没有必要这样做。这个:

Set Shape1 = objSlide.Shapes.AddPicture(Range("B5") & Image_Name_Pre, msoCTrue, msoCTrue, 100, 100)

为您提供对Shape1中新插入的图像的引用,因此您可以执行以下操作:

With Shape1
  .Width = 300
  .Height = 400
  .Top = 140
  .Left = 90
End With

与Shape2类似。

您也可以这样做:

Set Title = PPpres.Slides(i - 5)

这里有两个问题:

1)您尚未声明变量Title,并且

2)使用对象/方法/属性名称作为变量名称不是一个好习惯。

相反:

Dim oTitle as Slide
Set oTitle = PPpres.Slides(i - 5)