PPT如何使用VBA批量替换字体
前言
最近有个需求, 需要将PPT
内的字体全部修改为华文中宋, 并修改字号, 字符间距.
原以为可以和notepad++
录制宏, 但是office
居然把录制宏这个功能干掉了, 要实现这个需求, 只能自己写VBA
.
本文从零开始学习VBA
使用.
什么是VBA
Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。也可说是一种应用程序视觉化的Basic Script。 1994年发行的Excel 5.0版本中,即具备了VBA的宏功能。
以上来自维基百科, 在我看来就是可以应用在office
全家桶的一个编程语言. 既然是编程语言, 那就肯定有数据结构, 变量, 流程控制语句等.
PPT内的VBA对象
ActivePresentation
: 返回一个Presentation
对象, 该对象表示当前打开的PPT
.ActivePresentation.Slides
: 返回PPT
内的幻灯片集合.ActivePresentation.Slides.Shapes
: 返回幻灯片内的所有元素集合, 包括图片、文字等.ActivePresentation.Slides.Shapes.TextFrame
: 修改元素内的文本属性ActivePresentation.Slides.Shapes.TextFrame2
: 修改元素内的文本属性
TextFrame
和TextFrame2
都是可以修改文本属性. 不需要纠结它们有什么不同.
VBA语法
Dim a As object
: 声明object
类型的对象变量a
For Each a In Array ... Next
: 循环遍历Array
数组, 每个元素都赋值给变量a
.If...Then...Else
: 流程判断语句.Not a
: 对表达式的值取反, 相当于!a
.With object ... End With
: 为object
对象设置属性.'我被单引号注释了
: 单引号表示注释
完整例子
整个逻辑很简单, 就是循环遍历, 判断有文字就修改文字的属性.
如果有不想修改的属性, 打上单引号注释掉, 或者直接删掉那一行代码就可以了.
1 | Sub ChangeFont() |
总结
写VBA
的主要难点是对office
体系内的对象不了解, 就拿TextFrame
和TextFrame2
来说, 同样设置字体格式, 居然分为两个对象来设置.
目前的需求很简单, 已经能满足了, 如果后续有其他奇奇怪怪的需求, 再补充下这个代码.