PPT使用VBA批量删除图形

原因

一般被分享的PPT都是转换成PDF格式,想要借鉴的时候,需要通过一些工具转换,转换后,原版的logo,页眉页脚什么都需要删除,如果PPT页数很多,就难以删除,因此有这篇文章

第一阶段方案

借鉴了http://www.dzwebs.net/4321.html这篇文章,写出来一些代码,这个是通过名称进行删除,但是当PPT使用了多个版式,容易错删其他页面的正常图形。
如果样式简单、版式比较单一,可以使用下面的代码:

Sub delshapes_withname()
    For Each sld In ActivePresentation.Slides
        For Each s In sld.Shapes
            If s.Name = "Object 8" Or s.Name = "Object 5" Then
                s.delelte
            End If
        Next
    Next
End Sub

第二阶段方案

由于以上的方案有很多缺陷,因此设计了一个新的方案,考虑容易操作灵活而不改动代码。
第一步,在PPT第一页之前插入一页,并删除页面上所有的图形,点击开始>编辑>选择>选择窗格,里面为空为止
第二步,把其他页面需要删除的东西复制粘贴到第一页空白PPT页面
第三步,在PPT的VBA中插入模块,粘贴以上代码
第四步,查看删除情况,把还需要删除的,继续复制到第一页,继续运行,直到所有需要删除的图形都被删除
第五步,删除第一页

Sub delshapes_withsize()
On Error Resume Next
    For Each sld In ActivePresentation.Slides
    If sld.SlideIndex > 1 Then
        For Each s In sld.Shapes
            For Each ss In ActivePresentation.Slides(1).Shapes
                If Not IsNull(s) And Not IsNull(ss) Then
                    If s.Type = ss.Type And s.Width = ss.Width And s.Height = ss.Height Then
                        s.Delete
                    End If
                End If
            Next
        Next
    End If
    Next
End Sub

适配更多的情况

现在是以图形类型+图形宽度+图形高度作为匹配条件,没有考虑内容问题,也有可能其他图形与删除的图形刚好一样大小被误删除,因此可以加上内容判断、甚至位置判断。

序号属性名称代码
1名字s.Name
2宽度s.Width
3高度s.Height
4内容s.TextEffect.Text
5位置上s.Top
6位置左s.Left

更多的属性请参考微软的帮助文件
https://docs.microsoft.com/zh-cn/office/vba/api/powerpoint.shape
当然,判断条件越多,筛选范围越窄,这要根据PPT的规范程度和你自己要删除的图形本身特征来考虑使用那些匹配条件,并非越多越好

Sub delshapes_withmore()
On Error Resume Next
    For Each sld In ActivePresentation.Slides
    If sld.SlideIndex > 1 Then
        For Each s In sld.Shapes
            For Each ss In ActivePresentation.Slides(1).Shapes
                If Not IsNull(s) And Not IsNull(ss) Then                    
                    If s.Type = ss.Type And s.Width = ss.Width And s.Height = ss.Height And s.TextEffect.Text = s.TextEffect.Text Then
                        s.Delete
                    End If
                End If
            Next
        Next
    End If
    Next
End Sub
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Python批量删除PPT中的图片,可以使用python-pptx库来操作PPT文件。下面是一种可能的实现方法: 1. 首先,安装python-pptx库。你可以使用pip命令在终端中运行以下命令来安装: ``` pip install python-pptx ``` 2. 然后,创建一个Python脚本,并导入所需的库: ```python from pptx import Presentation import os ``` 3. 接下来,使用os模块遍历指定目录下的所有PPT文件: ```python folder_path = 'your_folder_path' # 替换为你的PPT文件所在的目录 for file_name in os.listdir(folder_path): if file_name.endswith(".pptx"): # 只处理PPTX文件 file_path = os.path.join(folder_path, file_name) # 在这里添加代码来处理每个PPT文件 ``` 4. 对于每个PPT文件,你可以使用python-pptx库来打开它并对其进行操作。下面是一个示例: ```python prs = Presentation(file_path) # 打开PPT文件 for slide in prs.slides: for shape in slide.shapes: if shape.shape_type == 13: # 图片形状的shape_type是13 slide.shapes._spTree.remove(shape._element) # 删除图片 prs.save(file_path) # 保存修改后的PPT文件 ``` 在上述代码中,我们遍历每个幻灯片和形状,如果形状是图片,则使用_spTree.remove()方法从幻灯片中删除它。 5. 最后,保存修改后的PPT文件。 请注意,这只是一种可能的实现方法,你还可以根据需要进行修改和优化。另外,你可能需要根据自己的情况为文件路径和文件扩展名进行调整。<span class="em">1</span> #### 引用[.reference_title] - *1* [Python办公自动化之批量遍历删除某个目录下的PPT最后一页](https://blog.csdn.net/zh6526157/article/details/121862639)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向兴东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值