在职场上混了几年,肯定和国内顶尖的咨询公司打过交道。你有没有惊叹过他们怎么能在短时间内完成大量的可交付成果,而且PPT里的文字和图表排列整齐,哪怕一个像素也不差。翻页时,除了局部内容,其他部分感觉不到任何变化。
曾经做过的时候,我也感叹过。直到后来,我了解了PPT编程。原来这一切都是通过提前准备材料,编写VBA程序,点击按钮完成的。效率和质量都比手工复制粘贴好很多。八卦少,先上效果图:
那么,如何用这么省时省力的按钮自动生成PPT报表呢?
一般来说,VBA编程有两种方法可以达到上述效果:
第一,代码是用PPT写的;
第二,代码是用Excel写的;
个人比较喜欢第二种方法。介绍了如何在Excel中编写VBA代码,实现一键自动生成PPT报表的酷炫效果。
01
—
根据报表内容准备相应的Excel文件
以本例为例:我分别准备了五张工作表作为PPT中素材的来源;设置好格式,调整好高度,宽度,字体,居中,颜色等,避免后期再用VBA代码进行设置;数据要有明确的按需筛选的字段,便于VBA自动筛选,然后将筛选结果粘贴进PPT中指定位置;PPT中粘贴的图片,来自于“各省矢量图”这张工作表,这里面有个难点。 我们之前在Excel VS Tableau省市交叉销售地图一文中曾经讲过定义名称动态引用图片的知识。不过,当时用到的是一维的,比较简单。本例中用到的是二维的图片存储区域,稍微复杂些。 4.1:定义名称辖区地图=INDEX(各省矢量图!$B$2:$C$5,MATCH(待分析列表!$P$2,各省矢量图!$A$1:$A$5,0),MATCH(待分析列表!$S$2,各省矢量图!$B$1:$C$1,0)),这里INDEX嵌套了MATCH函数; 4.2:“各省矢量图”中设置A列为辅助列,A1=待分析列表!$S$2,A2=IFERROR(HLOOKUP($A$1,$B$1:$C$5,ROW(A2),0),""),即将A1值设置为当前省份,A2及以下通过Hlookup函数,将该省份对应的数据查询出来,用于定义名称时计算MATCH(待分析列表!$P$2,各省矢量图!$A$1:$A$5,0),即Index查询区域的行值;MATCH(待分析列表!$S$2,各省矢量图!$B$1:$C$1,0))用于返回Index查询区域的列值。 关于这个二维表中通过定义名称动态引用图片的方法,用到了辅助列思维,很经典,需要仔细体味和掌握。02
—
准备所需的PPT模板
这里我准备了以下模板。
注意:
1)需要将两个相同的空白色模板放在一个PPT中,便于后续使用和重复复制操作,直到所有页面都自动生成。然后,删除多余的第一个和最后一个模板页面。
2)这个例子中的一些PPT副标题是固定的,每页都是一样的。这样只需要固化成PPT模板,调整格式和位置,避免反复粘贴VBA代码,提高代码运行效率。
03
—
VBA设置参考
按ALT+F11进入VBE编辑环境,点击菜单栏中的引用,添加微软PowerPoint 14.0对象库的引用。这一步是必须的,也是VBA打造PPT的关键点。
否则,将报告一个错误,并且无法定义activeSlide变量,也就是说,以下代码将无法正确运行。
"将活动幻灯片调暗为幻灯片。幻灯片"会弹出编译错误的对话框。
04
—
建立一个待分析的列表
接下来,我们根据PPT中每页显示的内容制作要分析的列表。在这个例子中,主要字段是K到M列。这里,每行的值通过VBA代码粘贴到P1:P2和S2位置,用于生成标题和确定省份。
05
—
写VBA代码
5.1定义相关变量和对象
5.2设置For循环语句,将模板复制为新页面,将当前活动的PPT页面设置为倒数第二个页面;
另外,记得下一步设置容错处理语句On error resume!由于本例使用了Copypicture方法,因此会出现随机和不可避免的错误。但事实上,当这个错误发生时,所有的VBA声明都已被正式执行。这个错误纯粹是破坏性的。可能是微软Office的bug。这个错误网上有很多解决方法,但是我个人测试无效!
其实解决起来很简单,只是一个容错语句就错误恢复下!
5.3粘贴PPT每页的内容。在本例中,首先通过自动筛选,然后将筛选结果粘贴到指定位置。
5.4删除多余的头尾幻灯片,只保留有效的内容页。清除对象变量动态幻灯片和新幻灯片
注意:这个方法有点蠢,暂时没有想到更好的方法。
注意:
1)范围(“XXX”)。这个例子中广泛使用的是CopyPicture方法,将相应的信息粘贴到PPT中。这意味着它将作为图片粘贴,不能在PPT中编辑。
然而,这里的标题实际上可以编辑。方法是在PPT模板中插入一个文本框,用ALT+F10键命名为“title”,然后通过下面的VBA代码给文本框赋值。活动幻灯片.形状(“标题”)。textframe.textrange.text =工作表(“待分析列表”)。范围(“P4”)。在这样生成的PPT报表中,标题不再是图片,而是一个可编辑的文本框。
此外,本例中没有提到图表的粘贴。事实上,图表可以粘贴到可编辑模式,但粘贴到链接格式后,需要由For循环生成多个图表,并为每个图表分别准备数据源。在调用粘贴代码时,需要在for循环中不断修改“chart”的名称,使其调用正确的图表来完成粘贴到PPT中的动作。活动纸。图表对象(“图表”)。
activeSlide。形状。粘贴特殊(链接=真)
以上方法太复杂,这里不讨论。向PPT报表中添加Chart最简单的方法就是用同样的Copypicture方法将Chart所在的区域粘贴到PPT中,这是最简单有效的代码。
2)范围(“管辖地图”)。这里也用了Copypicture方法,让我很开心。“辖区地图”是之前定义的名称:
辖区地图=INDEX(各省矢量地图!$B:$C,MATCH(待分析列表!$P,各省矢量图!$ a1:$ a5,0),MATCH(待分析列表!$S,各省矢量图!$ B $ 1:$ C $ 1.0))
在本例中,定义的名称中使用了Copypicture方法,这使得动态查询二维表中的图片并将其粘贴到PPT中成为可能。
3)本例中的要求是特殊的:
您需要使用指定的模板,而不是使用new PowerPoint . presentations . add创建默认的PPT模板,您需要打开指定的PPT模板文件;
因为要创建的页面数量不是固定的,所以有必要根据需要复制PPT模板页面,直到For循环结束。
需要根据指定的字段和条件进行过滤,然后将过滤结果列表粘贴到PPT中;
06
—
错误检查和格式调整
运行代码,检查是否有异常和错误,对页面布局不满意的Excel源文件中相应工作表的格式进行调整;需要通过以下语句调整VBA代码中的粘贴位置:
新的PowerPoint。活动窗口。选择。形状范围。左= 5
新的PowerPoint。活动窗口。选择。形状范围。顶部= 60
这个环节必不可少!检查后,单击宏按钮完成PPT报告。缺点是这个程序只生成报告的主体部分,封面和尾页还是需要手动添加。无论如何,我都成功逃离了无数坑,得到了想要的结果。
至此,你完成了。
如果朋友想要Excel源文件,可以关注作者个人微信微信官方账号,发送关键字“PPT Report”。
这是我的第三篇原创文章。如果你觉得还有一点收获,请不要故意给我好脸色看!那将是我继续发表原创作品的最大鼓励。
1.《幻灯片代码 Excel一键自动生成PPT报告》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《幻灯片代码 Excel一键自动生成PPT报告》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1045810.html