找回密码
 立即注册
搜索

网上下载教学课件批量删除logo

6
回复
407
查看
[复制链接]

14

主题

187

帖子

28

幻币

一流武者

Rank: 3Rank: 3

积分
223
QQ
2016-4-12 13:32:15 显示全部楼层 |阅读模式
网上下载教学课件每页都有logo,用起来非常烦人,有的有几十页,每页删除非常麻烦,希望高手指点一下。
说明:1、logo不是在母版中添加的,所以在模板中去除不掉。
2、添加的是同一个logo,但每页的名字不一样,所以也不能用vba进行批量删除。
图片的位置和大小是相同的,名字不同,个人水平有限,希望高手赐教。
16楼的方法可以解决这个问题,可是我把那个vba用到我的ppt中就是不可以,应该是磅值找的不对,还是其他原因 ?
附件是下载的一个课件。
PPT学习论坛
回复

使用道具 举报

11

主题

263

帖子

116

幻币

一流武者

Rank: 3Rank: 3

积分
391
QQ
2016-4-12 14:50:26 显示全部楼层

  • Sub Test()
  • '选择一个图形,执行此代码后,所有幻灯片上和此图形位置、大小相同的图形都会被删除

  • Dim oSlide As Slide, oShape As Shape
  • Dim myWidth As Single, myHeight As Single, myTop As Single, myLeft As Single

  • On Error Resume Next
  • If ActiveWindow.Selection.ShapeRange.Count <> 1 Then
  • If Err.Number <> 0 Then
  • MsgBox &quot;未选择任何对象。&quot; & vbCrLf & &quot;请先选择1个图形。&quot;, vbExclamation + vbOKOnly
  • Err.Clear
  • Exit Sub
  • End If
  • MsgBox &quot;未选择图形或选择的图形超过1个。&quot; & vbCrLf & &quot;请先选择1个图形。&quot;, vbExclamation + vbOKOnly
  • Exit Sub
  • End If

  • Set oShape = ActiveWindow.Selection.ShapeRange(1)
  • myTop = oShape.Top
  • myLeft = oShape.Left
  • myHeight = oShape.Height
  • myWidth = oShape.Width

  • For Each oSlide In ActivePresentation.Slides
  • For Each oShape In oSlide.Shapes
  • If oShape.Type = msoPicture Then

  • '有时候图形会有一点移动或变形,所以采用了近似的算法来包容此情况
  • If Abs(myTop - oShape.Top) < 1 And Abs(myLeft - oShape.Left) < 1 And Abs(myHeight - oShape.Height) < 1 And Abs(myWidth - oShape.Width) < 1 Then
  • oShape.Delete
  • End If
  • End If
  • Next
  • Next
  • End Sub

复制代码
PPT学习论坛
回复 支持 反对

使用道具 举报

16

主题

223

帖子

57

幻币

一流武者

Rank: 3Rank: 3

积分
298
QQ
2016-4-12 15:14:57 显示全部楼层
谢谢分享,学习了。
PPT学习论坛
回复 支持 反对

使用道具 举报

12

主题

213

帖子

38

幻币

一流武者

Rank: 3Rank: 3

积分
260
QQ
2016-4-12 15:50:44 显示全部楼层
学习了,留下标记
PPT学习论坛
回复 支持 反对

使用道具 举报

19

主题

200

帖子

45

幻币

一流武者

Rank: 3Rank: 3

积分
256
QQ
2016-4-12 16:10:00 显示全部楼层
代码可用,收藏!
另外,这个ppt制作业余,居然在每页上单独贴logo,一般我会贴在母版中。
此外,如果不想让别人动logo,可以将logo嵌入背景图片中,或者加入隐形的logo。呵呵
PPT学习论坛
回复 支持 反对

使用道具 举报

16

主题

233

帖子

47

幻币

一流武者

Rank: 3Rank: 3

积分
290
QQ
2016-4-12 16:14:29 显示全部楼层
注意到 logo 形状总位于幻灯片的最后一个所以可以这样写代码:

  • Sub 删除()
  • '批量删除最后一个形状
  • Dim mySlide As Slide
  • Dim oCount As Integer
  • For Each mySlide In ActivePresentation.Slides
  •     oCount = mySlide.Shapes.Count
  •     mySlide.Shapes(oCount).Delete
  • Next
  • End Sub

复制代码
唯一的问题是,这个代码容易误伤,呵呵
PPT学习论坛
回复 支持 反对

使用道具 举报

16

主题

194

帖子

45

幻币

一流武者

Rank: 3Rank: 3

积分
241
QQ
2016-4-12 17:19:44 显示全部楼层
你好,高手。这个代码好像不能批量删除有填充颜色的图片,该怎么改动这个代码呢,求您赐教。
PPT学习论坛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册