PPT VBA 与 Excel VBA 的对比
掌握 VBA 并不是一门业余爱好,而是一种工作能力,才成为职业安全的保障。同时,现代企业业务对 VBA 的解决方案需求巨大, VBA 将增强年轻人的就业竞争力。
PPT VBA 跟 Excel VBA 相比会简单很多,对象模型也没有那么复杂。这是因为在 PPT 里面可以做的事情本身也不复杂。
PowerPoint VBA 可以给我们带来什么?
- 批处理信息
- 自动化报告
- 与数据分析结合的报告报表
- 动画的自动化生成(如教学动画的自动化生成)
- PDF 报告的生成
- 在插件中固化排版的理念
- 套用 PPT 模板,获得更加丰富的图文文档
- 节约自己和他人的时间
PowerPoint VBA 共享宏
在 PPT VBA 中,大概有两种方式共享宏,一种是直接导出 .bas 文件, 一种是直接将代码嵌套到文档里面交付给用户
PowerPoint VBA 语法要点
过多使用 Variant 变量会导致代码变得难以阅读和低效,还易产生不可预知的错误
VBA 的数组可以动态扩充,而且可以保留原来的数据
数组的复制必须一个个元素的值来复制
VBA 提供了collection 对象来定义自己的集合,因为集合是类,而不是数据类型,所以必须建立集合实例,并且在变量中记录对该实例的引用。像其他任何对象一样,当包含其引用的最后一个变量被设置成nothing或不可见时,Collection 对象将被撤销。它包含的所有对象都会被释放。
Collection 对象是项目所组成的有序集合,可以把这个集合作为单元来引用。
Collection 对象提供了简便的方法,直截了当地将一组相关的项目视为单一对象来引用。
集合中的项目或成员被这样一个事实联系起来:它们都属于这个集合。
集合的成员并不一定是同一种数据类型。
Add 添加新成员, Remove 删除成员
集合不用创建新对象或复制现有元素,它在处理大小调整时所用的执行时间比数组小,而数组必须使用 Redim 语句
如果处理较小的,动态的项目集,可能希望使用集合
strConv 可以实现字符串和数组之间的相互转换
'从字符串变为字节
Private Sub ByteArrayToString()
Dim MyString As String
Dim arrByte() As Byte
MyString = "This is a test string."
arrByte = StrConv(MyString, vbUnicode)
End Sub
Private Sub ByteArrayToString()
'从字节变成字符串
Dim MyString As String
Dim arrByte() As Byte
MyString = StrConv(arrByte, vbFromUnicode)
End Sub
从文本文件中读取和写入必须经过数据类型转换
Rmdir 无法删除包含文件夹和子文件夹的文件夹,而 fso 的 DeleteFolder 方法可以传递一个 true 强行删除文件夹
fso 只能建立和读取文本格式的文件,不支持诸如图片之类的二进制文件
对象之间有着明确的关系,这就是对象模型带来的好处
对象模型给出了基于对象程序的结构。通过定义程序中所使用的对象之间的关系,对象模型能够以一种使编程变得更容易的方式来组织对象。
PPT 对象模型里面的对象并不多:
Application
Presentations
Presentation
Slides
Slide
Shapes
Shape
运用 PowerPoint 对象模型中的对象编程,解决 PowerPoint 自动化过程中对象处理的问题,提高工作效率
PPT 和 Excel 不同的地方在于,PPT 在 VBE 里面看不到每个 Slide ,你不可以像往每个 Sheet 添加 代码的方式添加代码到 slide 中
获取选中幻灯片的号码
Private Sub GetSelectedSlideIndex()
Dim sli As Slide
Dim SlideIndex As Long
'Set the application window view
ActiveWindow.ViewType = ppViewNormal
'Get selected slide index
SlideIndex = ActiveWindow.Selection.SlideRange.SlideIndex
'Get selected slide
Set sli = ActivePresentation.Slides(SlideIndex)
Set sli = Nothing
End Sub