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

问题描述 投票:0回答:2

我有很多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编码不是很擅长,任何建议都表示赞赏。谢谢。

vba powerpoint shapes
2个回答
0
投票

您可以通过查看“顶部”和“左侧”属性来检查位置。如果它们的尺寸相同,您也可以检查尺寸。

例如:

 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是变量或硬编码值。


0
投票

非常感谢蒂姆·威廉姆斯。

导频代码在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!"

结束子

© www.soinside.com 2019 - 2024. All rights reserved.