找回密码
 立即注册
搜索

PPT中批量替换内容

4
回复
690
查看
[复制链接]

2

主题

7

帖子

10

幻币

一流武者

Rank: 3Rank: 3

积分
291
QQ
2017-6-7 09:15:08 显示全部楼层 |阅读模式
不知PPT中是否可以实现批量替换内容,或通过其他方式也可,以下为举例
例:想把PPT文档中所有的"A"替换为“B”,“C”替换为“D","E"替换为“F”....,大概共1000项,请问是否有方法可以实现
感谢
PPT学习论坛
回复

使用道具 举报

1

主题

6

帖子

72

幻币

一流武者

Rank: 3Rank: 3

积分
275
2017-6-7 10:26:00 显示全部楼层
可以的,利用遍历所有幻灯片可以实现。
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

2

帖子

59

幻币

一流武者

Rank: 3Rank: 3

积分
216
QQ
2017-6-7 10:47:12 显示全部楼层
给个实例吧
Sub 批量替换字符()
Dim sld As Slide, shp As Shape
    For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
            If shp.HasTextFrame Then
                If shp.TextFrame.HasText Then
                    Set trng = shp.TextFrame.TextRange
                    For i = 1 To trng.Characters.Count
                         With trng.Characters(i)
                           If .Text = "A" Then
                              .Text = "B"
                              .Font.Color = Choose(Int(Rnd * 3 + 1), vbBlue, vbGreen, vbRed, vbYellow)
                              .Font.Bold = True
                           End If
                           If .Text = "C" Then
                              .Text = "D"
                              .Font.Color = Choose(Int(Rnd * 3 + 1), vbBlue, vbGreen, vbRed, vbYellow)
                           End If
                           If .Text = "E" Then
                              .Text = "F"
                              .Font.Color = Choose(Int(Rnd * 3 + 1), vbBlue, vbGreen, vbRed, vbYellow)
                              .Font.Bold = True
                           End If
                         End With
                    Next
                 End If
             End If
         Next
     Next
End Sub
实例.zip (73.26 KB, 下载次数: 10)
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

9

帖子

27

幻币

一流武者

Rank: 3Rank: 3

积分
257
QQ
2017-6-7 11:43:34 显示全部楼层
若是上千页,上述代码自然不是好的解决方案,下面的代码,是优化的代码,效率高一些,继续提供下载。
Sub 批量替换字符()
arr = Array("A", "C", "E", "G", "I", "K", "M") '被替换的字符
brr = Array("B", "D", "F", "H", "J", "L", "N") '替换后的字符
x = LBound(arr)
Z = UBound(arr)
Dim sld As Slide, shp As Shape
    For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
            If shp.HasTextFrame Then
                If shp.TextFrame.HasText Then
                    Set trng = shp.TextFrame.TextRange
                    For i = x To Z
                       trng.Replace FindWhat:=arr(i), Replacewhat:=brr(i), WholeWords:=True
                    Next
                 End If
             End If
         Next
     Next
End Sub
实例2.zip (74.45 KB, 下载次数: 13)
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

8

帖子

63

幻币

江湖少侠

Rank: 2

积分
179
QQ
2017-6-7 11:52:37 显示全部楼层
厉害,学习了!
PPT学习论坛
回复 支持 反对

使用道具 举报

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