PPT VBA 的学习笔记

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 自从2014年开通[完美Excel]微信公众号以来,坚持分享已经学习到的Excel和VBA知识和心得,目前已分享文...
    完美Excel阅读 8,343评论 6 69
  • 【引用地址】http://club.excelhome.net/blog-238368-1693.html 一个高...
    whw83阅读 1,012评论 0 3
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,416评论 0 4
  • 1.1 VBA是什么 直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得...
    浮浮尘尘阅读 21,860评论 6 49
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32