做PPT最头疼的问题:全篇字体杂乱、批量替换漏字。
PPT自带的替换字体功能很鸡肋,组合文本、表格内文字经常完全替换不到,几十页PPT手动修改极其浪费时间。
今天给大家分享一款VBA宏代码,完美解决所有漏改问题,文本框、组合形状、表格文字全覆盖,一键统一全篇微软雅黑!
01 普通替换功能的致命缺陷
系统自带替换功能仅支持普通文本框,以下场景全部失效:
❌ 组合形状内嵌套文本
❌ PPT表格单元格文字
❌ 特殊版式、嵌套图形文本
而这款代码,真正实现了全页面无死角替换。
02 终极万能代码(支持表格+组合文本)
Sub AllFontToYaHei() Dim sld As Slide Dim shp As Shape Dim subShp As Shape Dim tbl As Table Dim cell As Cell Dim i As Integer, j As Integer '遍历所有幻灯片页面 For Each sld In ActivePresentation.Slides For Each shp In sld.Shapes On Error Resume Next '处理组合形状 If shp.Type = msoGroup Then For Each subShp In shp.GroupItems Call ChangeFont(subShp) Next subShp '专属逻辑:处理PPT表格字体 ElseIf shp.HasTable Then Set tbl = shp.Table For i = 1 To tbl.Rows.Count For j = 1 To tbl.Columns.Count Set cell = tbl.Cell(i, j) If cell.Shape.HasTextFrame And cell.Shape.TextFrame.HasText Then
With cell.Shape.TextFrame.TextRange.Font .NameFarEast = "微软雅黑" .Name = "微软雅黑" End With End If Next j Next i Else Call ChangeFont(shp) End If On Error GoTo 0 Next shp Next sld MsgBox "字体全部替换为微软雅黑完成!(含表格字体)", vbInformationEnd Sub'统一字体核心方法Private Sub ChangeFont(shp As Shape) If shp.HasTextFrame Then If shp.TextFrame.HasText Then With shp.TextFrame.TextRange.Font .NameFarEast = "微软雅黑" .Name = "微软雅黑" End With End If End IfEnd Sub
代码核心亮点
✅ 全覆盖适配:兼容普通文本、组合图形、PPT表格
✅ 字体不错乱:双重锁定中英文字体,无乱码、无格式异常
✅ 智能容错:自动跳过空白元素,运行不闪退、不报错
✅ 极速高效:3秒搞定几十页PPT全篇统一
03 极简使用教程,无需编程基础,三步直接搞定:
1、打开编辑器:打开PPT,快捷键 Alt+F11 调出VBA窗口
2、粘贴代码:点击【插入】-【模块】,粘贴上方完整代码
3、一键运行:按 F5 运行,弹出提示即替换完成
04 常见问题答疑
Q1:WPS可以用吗?A:完全兼容,开启宏功能即可正常使用。
Q2:提示宏被禁用怎么办?A:点击PPT顶部黄色提示栏,选择「启用内容」即可,无安全风险。
Q3:想更换成其他字体怎么改?A:直接替换代码中所有「微软雅黑」为目标字体全称即可。
Q4:会不会破坏原有PPT格式?A:仅修改字体样式,不改动配色、排版、动画、图表数据,零副作用。
写在最后
统一字体是PPT排版的基础,与其手动逐页微调,不如用这款终极代码一键搞定。完美解决表格、组合文本漏改难题,一次保存、永久复用,大幅提升办公效率!✨