我有很多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是变量或硬编码值。
非常感谢蒂姆·威廉姆斯。
导频代码在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!"
结束子