我有很多PowerPoint文件,每张幻灯片的右上角都有一张图片。 它既不是母版幻灯片,也不是自定义布局形状。
它们被一一粘贴到所有幻灯片上。
我有一些代码如下,可以从幻灯片中删除所有形状(图片(,但是如何在幻灯片的特定位置找到形状(图片(?
For Each Slide In SlideList
Set sldTemp = ActivePresentation.Slides(Slide)
For lngCount = sldTemp.Shapes.Count To 1 Step -1
With sldTemp.Shapes(lngCount)
'----------Delete All shapes = picture----------
If .Type = msoPicture Then
.Delete
End If
End With
Next
Next
'-----------------------------------------
我不太擅长 VBA 的 PowerPoint 编码,任何建议都值得赞赏。谢谢。
您可以通过查看"顶部"和"左侧"属性来检查位置。 您还可以检查尺寸是否都相同。
例如:
If .Type = msoPicture Then
If .Top > x and .Top < y and .Left > a and .Left < b Then
.Delete
Exit For
End If
End If
其中 x,y、a 和 b 是变量或硬编码值。
非常感谢Tim Williams。
引导代码在 3 台 Win10 x86 计算机上正确运行。
顺便说一句,根据这句话
默认情况下,PowerPoint 中新演示文稿的大小当前为宽屏类型演示文稿,13.333 英寸 x 7.5 英寸。大多数情况下,屏幕设置上的每英寸点数为 96 点 (dpi(,因此这意味着默认 PowerPoint 演示文稿的分辨率为 1280 x 720 像素。
虽然下面设置的左上角值可以完全匹配我的PowerPoint幻灯片中的右上角小徽标(形状(,并且来自3个不同显示器的相同结果,其中一个处于低清晰度模式。
Sub DeleteAllTopRightShapes((
Dim sldTemp As Slide
Dim lngTemp As Long
Dim lngCount As Long
For Each sldTemp In ActivePresentation.Slides
For lngCount = sldTemp.Shapes.Count To 1 Step -1
With sldTemp.Shapes(lngCount)
If .Type = msoPicture Then
If .Top >= 0 And .Top < 60 And .Left >= 400 Then
.Delete
End If
End If
End With
Next
Next
MsgBox "Process complete!"
结束子