如何从每个PPT幻灯片中删除位于特定位置(例如右上角的图片)



我有很多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!"

结束子

最新更新