ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
一招顶“一万招”的懒人技巧 Excel 2016函数公式学习大典 Office知识技巧免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 6045|回复: 16

[求助] VBA如何自动更新PPT中的图表数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-6-22 12:44 | 显示全部楼层 |阅读模式
请教各位大神:

背景:我需要根据excel搭建好的计算模板,把里面的数据贴入到已有的PPT模板中(更新表格里面的数据)。但由于PPT页码太多了,所以想用VBA的方法,批量更新PPT中的图表信息。

附件是PPT和EXCEL的模板,我看了下别人的分享,我可以写成下面代码那样,把excel的值赋予给ppt中的图。但表格怎么弄呢?此外,选择窗格中,我是不是只能用chart("表格4")这样写法,有没有像序列号的写法?

大神能帮忙提供一个框架的代码吗?我模仿着来写。谢谢了。


    Set pchtws1 = pReport.Slides(n).Shapes("chart1").Chart.ChartData.Workbook.Worksheets(1) ''修改范围
    pchtws1.Range("B1:I1").Value = sh.Range("C7:J7").Value
    pchtws1.Range("A2:A14").Value = sh.Range("B8:B" & bb).Value
    pchtws1.Range("B2:I14").Value = sh.Range("C8:J" & bb).Value

例子.rar (53.38 KB, 下载次数: 103)

相关搜索

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-22 15:16 | 显示全部楼层
顶一顶。有大神指点一下吗?

TA的精华主题

TA的得分主题

发表于 2019-6-22 15:52 | 显示全部楼层
顶一下,看看有没有出大神出现!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-22 17:34 | 显示全部楼层
刚刚又尝试了一下,只实现了把图表里面的数据更新的功能。
PPT中的表格更新还是没能实现。查了资料,发现表格是Table,属于slides.shape的子集。但就是找不到对应的资料写这段码。。

求大神指导啊,我不是伸手拿资料的,真的查不到啊。。。5555

参考资料(点击进去)

  1. Sub 测试()
  2.     Dim pp As PowerPoint.Application
  3.     Dim pReport As PowerPoint.Presentation
  4.     Dim pchtws1 As Worksheet
  5.     Dim pchtws2 As Worksheet
  6.     Dim wb As Workbook
  7.     Dim sh As Worksheet
  8.    
  9.     Application.ScreenUpdating = False
  10.    
  11.    
  12.     '选定Excel页码
  13.     Set wb = ThisWorkbook
  14.     Set sh = Sheets("P1") 'sh选定P1页
  15.    

  16.     '打开演示文稿模板
  17.     Set pp = CreateObject("powerpoint.application")
  18.     Set pReport = pp.ActivePresentation
  19.    
  20.     '更新图表7数据
  21.     Set pchtws1 = pReport.Slides(1).Shapes("图表 7").Chart.ChartData.Workbook.Worksheets(1) ''修改范围
  22.     pchtws1.Range("A1:B4").Value = sh.Range("A1:B4").Value

  23.      '更新图表8数据
  24.     Set pchtws1 = pReport.Slides(1).Shapes("图表 8").Chart.ChartData.Workbook.Worksheets(1) ''修改范围
  25.     pchtws1.Range("D1:E4").Value = sh.Range("D1:E4").Value
  26.    
  27.    
  28.    
  29.     Application.ScreenUpdating = True
  30. End Sub

复制代码



TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-22 19:43 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-22 23:53 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-23 00:10 | 显示全部楼层
刚刚模仿了别人写的内容,写了下面这段内容,并且也成功把excel的内容copy到了PPT上。

但问题是,我想把数据copy到已有的表格中,而不是新建一个表格。。。(如下图。)

难道我的Select有问题?


'更新表格2数据

    sh.Range("A1:B4").Copy
    pReport.Slides(1).Shapes("表格 1").Select
    pReport.Slides(1).Shapes.PasteSpecial DataType:=ppPasteDefault

Error.JPG

--------------------------------------------------------------------------------------------------------------------------------------------------
此外,突然多了个问题。链接:https://zhidao.baidu.com/question/1366368314523863379.html

我怎么判断Shape是1,还是2,还是其他呢?从哪个位置可得出来呢?是从窗格的顺序看出来的吗?


对象.JPG

窗格.JPG







TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-23 09:19 | 显示全部楼层
问了同事之后,才发现数据是不能在原有的Table上修改的,只能通过复制Excel,再黏贴(可以选择性黏贴,具体区别可以在录制宏下尝试,再回看代码区别。)

由于VBA是初学,所以很多地方写的很粗糙,请大神们点一点优化的地方。并且就一页PPT,代码写的那么长,如果能有折叠功能就好。(其实可以通过设置多个Sub 第一页,Sub 第二页这种分开,以后就好找点 。)

其中查到感觉比较有用的资料,有兴趣的同学可以查看:

http://club.excelhome.net/thread-1425161-1-1.html

http://www.exceloffice.net/archives/1275

https://blog.csdn.net/olivesun88/article/details/50980698

http://www.exceloffice.net/archives/2091

等等,其他太多了。

不多说,先上代码和压缩测试包:

例子.rar (65.25 KB, 下载次数: 484)

TA的精华主题

TA的得分主题

发表于 2019-7-19 22:47 | 显示全部楼层
刚好遇到这个问题,学习一下,谢谢楼主!

TA的精华主题

TA的得分主题

发表于 2019-9-26 14:23 | 显示全部楼层
hsl992 发表于 2019-6-23 00:10
刚刚模仿了别人写的内容,写了下面这段内容,并且也成功把excel的内容copy到了PPT上。

但问题是,我想把 ...

楼主,ppt右边那部分有图表编号序列的部分怎么调出来的。。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,高效办公专列,每天发车

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2021-5-11 03:30 , Processed in 0.069751 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2021 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

快速回复 返回顶部 返回列表