首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将excel数据粘贴到powerpoint图表数据表中

将excel数据粘贴到powerpoint图表数据表中
EN

Stack Overflow用户
提问于 2012-10-10 21:30:05
回答 2查看 4.7K关注 0票数 1

我希望smeone能在这方面帮助我。我想从excel中提取dta并粘贴到电源点图表中,就像我手动使用代码所做的那样。我想自动创建一个标准的演示文稿,我经常为不同的客户群创建。(我正在处理SAS中的数据,并将其从SAS导出到excel文件中,该文件每次都有相同的选项卡和格式)

我能够编写附加的宏,这只是第一次尝试虚拟日期,看看它是如何工作的,我从其他网络来源自由复制。它一直工作到那时结束。它打开spower point,用我的模板创建一个页面,并添加一个正确类型的图表。它将打开该图表的数据表。问题是我不能粘贴数据。

我相信我没有正确地引用sorce excel表,所以VBA被混淆了(这是理所应当的)。有人能解释我是怎么做到的吗。

最后,我可能会修改它来打开一个现有的图表并粘贴新的数据,因为我只需要在代码中做一次格式化(我也已经准备好了基本的演示文稿)。但我需要能够粘贴数据。

在这个网站和其他地方有许多如何将图表从Excel复制到PPT的示例,但我不想这样做,我希望PPT存储数据,以便在创建后根据需要进行修改。然而,我还没有找到一个可以完成我想要完成的任务的工具。

如果重要的话,我使用的是Office2010。

提前感谢所有能帮助我的人。

马里奥

子测试()

代码语言:javascript
复制
Set ObjPPT = CreateObject("PowerPoint.Application")
Set ObjPresentation = ObjPPT.Presentations.Add
ObjPresentation.ApplyTemplate ("C:\Documents and Settings\ewnym5s\My Documents\Tools\Clean PPT Page.potx")
Set ObjSlide = ObjPresentation.Slides.Add(1, 12)
Set mychart = ObjSlide.Shapes.AddChart(xlBarClustered, 200, 200, 500, 200).Chart

Set wb = mychart.ChartData.Workbook
Set ws = wb.Worksheets(1)
ws.ListObjects("Table1").Resize ws.Range("A1:D6")


Sheets("Sheet1").Select
Range("A1:D6").Select
Selection.Copy

'The macro works perfectly up to here. The data is on Excel Sheet1 A1:d6 and it needs to be pasted to the same range on Sheet1 of the PPT data sheet.

‘如果我在单步执行代码的同时切换窗口,我可以看到数据被选中和复制。只是粘贴部分不起作用。

代码语言:javascript
复制
ws.Range("A1").Paste
EN

回答 2

Stack Overflow用户

发布于 2015-04-14 00:24:27

感谢你们两位的帖子,因为这是我很难找到自己的东西!下面是经过修改的代码的清理版本,以便您可以将其拖放并准备就绪(例如,声明变量和调整以使代码正常工作)。

代码语言:javascript
复制
Sub test()

Dim ObjPPT As PowerPoint.Application
Dim ObjPresentation As PowerPoint.Presentation
Dim ObjSlide As PowerPoint.Slide
Dim mychart As PowerPoint.Chart
Dim wb As Workbook
Dim ws As Worksheet
Dim MainWorkbook As String

Set ObjPPT = CreateObject("PowerPoint.Application")
Set ObjPresentation = ObjPPT.Presentations.Add
ObjPresentation.ApplyTemplate ("C:\Documents and Settings\ewnym5s\My Documents\Tools\Clean PPT Page.potx")
Set ObjSlide = ObjPresentation.Slides.Add(1, 12)
Set mychart = ObjSlide.Shapes.AddChart(xlBarClustered, 200, 200, 500, 200).Chart

Set wb = mychart.ChartData.Workbook
Set ws = wb.Worksheets(1)
ws.ListObjects("Table1").Resize ws.Range("A1:D6")

MainWorkbook = ThisWorkbook.Name
Windows(MainWorkbook).Activate
Sheets("Sheet1").Select
Range("A1:D6").Select
Selection.Copy
ws.Range("A1:D6").Value = Range("A1:D6").Value

End Sub
票数 1
EN

Stack Overflow用户

发布于 2012-10-11 18:13:36

可以使用.value参数设置不同范围之间的值。这将只设置单元格中的值,但不会保留任何格式。如果它只是图表的数据,这应该无关紧要。无论如何,您都可以在以后通过VBA应用格式。设置该值也比在Excel VBA中复制和粘贴效率高得多。

由于源和目标都是excel范围,因此可以执行以下操作:

代码语言:javascript
复制
ws.Range("A1:D6").Value = Range("A1:D6").Value
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12820559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档