找回密码
 立即注册
搜索

PPT中批量替换内容

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

2

主题

10

帖子

85

幻币

江湖少侠

Rank: 2

积分
197
QQ
2017-3-2 09:52:36 显示全部楼层 |阅读模式

不知PPT中是否可以实现批量替换内容,或通过其他方式也可,以下为举例
例:想把PPT文档中所有的"A"替换为“B”,“C”替换为“D","E"替换为“F”....,大概共1000项,请问是否有方法可以实现
感谢
PPT学习论坛
回复

使用道具 举报

1

主题

9

帖子

67

幻币

江湖少侠

Rank: 2

积分
194
QQ
2017-3-2 11:07:51 显示全部楼层

可以的,利用遍历所有幻灯片可以实现。
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

3

帖子

6

幻币

江湖少侠

Rank: 2

积分
142
QQ
2017-3-2 11:26: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, 下载次数: 12)
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

7

帖子

103

幻币

一流武者

Rank: 3Rank: 3

积分
228
QQ
2017-3-2 12:45:16 显示全部楼层
若是上千页,上述代码自然不是好的解决方案,下面的代码,是优化的代码,效率高一些,继续提供下载。
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, 下载次数: 32)
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

6

帖子

56

幻币

江湖少侠

Rank: 2

积分
191
QQ
2017-3-2 13:07:38 显示全部楼层

厉害,学习了!
PPT学习论坛
回复 支持 反对

使用道具 举报

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