找回密码
 立即注册
搜索

(PPT宏)轻松删除空白文本框──大量做ppt的请一定要看

7
回复
873
查看
[复制链接]

18

主题

225

帖子

47

幻币

一流武者

Rank: 3Rank: 3

积分
287
QQ
2016-4-12 12:24:28 显示全部楼层 |阅读模式
(PPT宏)轻松删除空白文本框──大量做ppt的请一定要看
我是一个在校大学生,要看大量ppt课件。而又习惯在“普通”视图下浏览(我想有很多人也是这样),有一个不得不面对的问题是:经常出现空白文本框(上面写着“单击此处添加(副)标题”、“单击此处添加文本”),阻挡了有效内容。以前我总是习惯性地,出现一个就删一个,但对于一个含有大量空白文本框的ppt,确实非常费劲,感到郁闷。终于下定决心钻研,写出了下面这个macro,同各位一起分享,并请各位不吝指教!
说明:
1、用三个条件(“If…Then…”嵌套)确定了要对付的目标,即空白文本框;
2、之所以用“Do…Loop While…”循环(结合“found”变量),是因为我发现“For Each shp In Sld.Shapes”这个语句并非真的“对每一个shape对象”,而是只要找到(并删除)一个空白文本框,就“Next shp”去了,用“Do…Loop While…”循环(结合“found”变量),既删除了所有空白文本框,又不会出现“死循环”,实现了想要的效果;
Sub Del空框()
Dim found As Boolean
Do
found = False
For Each Sld In ActivePresentation.Slides
For Each shp In Sld.Shapes
If shp.HasTextFrame Then
If shp.Type  1 Then
If Not shp.TextFrame.HasText Then
ActiveWindow.View.GotoSlide Index:=shp.Parent.SlideIndex
shp.Select
MsgBox "Here" '此语句用于检验,可省去
shp.Delete
found = True
End If
End If
End If
Next shp
Next Sld
Loop While found = True
End Sub
如果你觉得这个贴子还值得一看的话,那么请一定要回复,你的回复会给我很大的激励。
PPT学习论坛
回复

使用道具 举报

12

主题

208

帖子

36

幻币

一流武者

Rank: 3Rank: 3

积分
256
QQ
2016-4-12 13:34:57 显示全部楼层
受益颇多,谢谢分享。提几条小意见:
一、“空白文本框”的“学名”叫占位符,它与普通文本框是有着本质区别的。
二、如果想要所有幻灯片上都不出现占位符,可选中全部幻灯片并应用“空白”版式(已有文字的占位符会自动保留)。不需用宏即可轻松实现。
三、你的宏很不错,尤其是Do 循环与For循环的嵌套使用,让人颇受启发(试了一下,好像使用别的属性或方法时For循环是能够遍历shape的,不知为什么用delete时不行)。不过,个人以为其中也有不足之处:
    1. 三个嵌套的If似乎是多余的,一个If就可以了:If ... And ... And Not ... Then。
    2. 用“非自选图形”、“有文本框”这两个条件筛选出来的不一定就是占位符,应该用常数14(msoplaceholder)来判断形状是否为占位符。
    3. 用msgbox来确认一下确实没有多大必要,反而影响宏的运行速度,因此返回到ActiveWindow这一步也就可以省去。
综上,宏似可精简为:
Sub 删除占位符()
    Dim sld As Slide, shp As Shape, found As Boolean
    Do
        found = False
        For Each sld In ActivePresentation.Slides
            For Each shp In sld.Shapes
                If shp.Type = 14 And Not shp.TextFrame.HasText Then
                    found = True
                    shp.Delete
                End If
            Next
        Next
    Loop While found = True
End Sub
PPT学习论坛
回复 支持 反对

使用道具 举报

16

主题

209

帖子

37

幻币

一流武者

Rank: 3Rank: 3

积分
251
QQ
2016-4-12 14:47:18 显示全部楼层
感谢回复,自己独个想确实是“一人计短”,我确实受益良多,谢谢2楼的分享!
PPT学习论坛
回复 支持 反对

使用道具 举报

11

主题

231

帖子

34

幻币

一流武者

Rank: 3Rank: 3

积分
270
QQ
2016-4-12 15:04:33 显示全部楼层
2楼的代码很精简,谢谢了。
PPT学习论坛
回复 支持 反对

使用道具 举报

21

主题

231

帖子

49

幻币

一流武者

Rank: 3Rank: 3

积分
280
QQ
2016-4-12 15:17:36 显示全部楼层
上面两种方法都只能删除占位符,但不能删除文本框!请高手还来讨论一下如何删除自己添加的空白文本框!
PPT学习论坛
回复 支持 反对

使用道具 举报

16

主题

214

帖子

38

幻币

一流武者

Rank: 3Rank: 3

积分
276
QQ
2016-4-12 15:57:55 显示全部楼层
不错,顺便问一下高手们,请问你们知道在WORD文档里,怎么样用宏来搜索文本框吗?
PPT学习论坛
回复 支持 反对

使用道具 举报

15

主题

216

帖子

41

幻币

一流武者

Rank: 3Rank: 3

积分
263
QQ
2016-4-12 16:28:07 显示全部楼层
学习了。我一般这种情况是修改母版。有时选择空白母板会把一些需要保留的占位符也删掉,所以都是直接在引用的相应母版上操作的。
PPT学习论坛
回复 支持 反对

使用道具 举报

16

主题

204

帖子

36

幻币

一流武者

Rank: 3Rank: 3

积分
258
QQ
2016-4-12 16:30:36 显示全部楼层
学习了。谢谢。
PPT学习论坛
回复 支持 反对

使用道具 举报

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