由于平常上班,加上业余时间又报了会计财务知识培训和理财训练营,没有过多精力去做Excel和PPT技能方面的教程。最近有粉丝问Tony,能不能做一期PPT动态图表方面的讲义,趁着今天周末,上帝都不干活的日子,Tony花费一点时间做这样一期教程,希望对大家有所帮助。


目前,对于在PPT中实现动态图表,传统的做法是做好基础图表,利用PPT的动画效果进行触发,这样做出来的图表动态效果是有了,但真正演示的时候很蹩脚。既然传统的形式达不到令人满意的效果,那今天Tony就来跟大家讲解如何使用控件+VBA代码实现动态交互的体验感


利用PPT控件+VBA代码实现动态交互图表,在目前整个互联网,近乎是一片空白 ,Tony翻阅了好多资料,有幸从刘万祥老师那里看到了制作PPT动态图表的教程,方法是没问题,但在运行代码时出现800报警 ,起初我以为是自己的数据源和链接单元格值有问题,就将代码从头至尾每条进行了研究,经过多方验证,搞的是死去活来,还是失败 ,当时已经有了放弃的冲动,我们先看下现在互联网上流传的控件代码:


这段代码用到了VBA的Gotfocus和Lostfocus,也就是触发焦点和失去焦点时运行释放对象变量。数据源区域Listrng和链接单元格Tarcell,以及组合框每次下拉时对应单元格值的变化,逻辑上没有问题,但保存.pptm运行时出现报错……


现在不纠结问题出现在哪里?今天Tony用自己的方法与步骤来讲解具体的操作方法 :

前面步骤都一样:

1.先在Excel中做好动态图表,利用Index、Offset、Vlookup以及Iferror函数均可,这是最基本的,这里不做讲解。


2.将包含动态图表的 Excel 文件嵌入到 PPT,复制 Excel 文件里放置图表的单元格区域(注意是图表后面的单元格区域,不是图表),在 PPT 里任意一页,选择性粘贴 - 工作表对象,这样,就把那个 Excel 文件“嵌入”到这个 PPT 里了。


3.在 PPT 里插入组合框

打开PPT,开发工具 - 控件,插入一个组合框。如果你的 PPT 没有 开发工具,请先在 文件 - 选项 - 自定义功能区 里调出来。接下来我们需要双击组合框,会出现VBA画面,现在要做的是使用VBA代码从 Excel 里读出选择项列表,赋给下拉框。


4.在VBA界面写入代码

左侧选中 slide1 或 slide2 这样的对象(前面有个 PPT 的小图标,Tony这里选的是slide2),在右侧代码区输入如下的代码:(代码下面,大家可以直接套用,但一定记住:sh.Range(”s2:s15”)和sh.Range(“c11”)的值是你自己数据源和链接单元格的值,它是变化的)

这段代码所做的事情,就是在每次 PPT 放映、下拉框被选中的时候,就去打开那个嵌入在 PPT 里的 Excel 文件,读取其中工作表的 S2:S15范围,把这些选择项赋给下拉框。当你进行下拉选择时,代码会执行把你选择的结果写入工作表的C11单元格,以驱动图表变化。


5.放映PPT播放动态图表

在全屏模式下放映PPT,鼠标点击下拉框,可能会看到赋值的一下闪动,这时下拉框可能只有1行,再点一下下拉框,就可以完全展开了(这应该是个小bug)。选择某个选择项,右侧的图表就可以实现动态切换了!

6.保存PPT文件

保存文件时会提示含有宏,选择保存为后缀名为 .pptm 带宏格式的文件。下次打开时会有宏提示,选择启用宏即可。


7.数据更新

以后需要更新数据时,应该更新 PPT 里的嵌入对象。可以直接双击打开,但这样窗口太小,不方便操作。这时我们在嵌入对象上 右键 - 工作表对象 - 打开,这样会打开一个大的 Excel 窗口供你编辑,这样会更方便。

PPT中可以完美支持演示所有的Excel图表,甚至在PPT中直接也可以做动态图表,当然还是要借助VBA代码来实现,不过也并不难,如果大家有兴趣学习更多的进阶Excel动态图表、PPT动态图表知识,欢迎私信@Tony,最后祝大家玩的愉快 ,当然,Tony不介意你的双手与赞成,以期能够创作更多作品,与大家共勉。