将Excel数据粘贴到powerpoint图表数据表中

时间:2012-10-10 13:30:05

标签: vba excel-vba powerpoint-vba excel

我希望smeone可以帮助我。我想从excel中获取dta并将其粘贴到功率点图表中,就像我手动但使用代码一样。我想自动创建一个标准的演示文稿,经常为不同的客户群创建。 (我正在使用SAS处理数据并将其从SAS转换为excel文件,每次都有相同的选项卡和格式)

我能够编写附加的宏,这只是第一次尝试使用虚拟日期来查看它是如何工作的,我从其他网络资源中大量复制。它一直工作到那时为止。它打开spower点,用我的模板cretres页面并添加一个正确类型的图表。它打开该图表的数据表。问题是我无法粘贴数据。

我相信我没有正确地引用Sorce excel表,所以VBA正在被cnofused(因为它应该)。有人可以说我是怎么做到的。

最后,我可能会修改它以打开现有图表并粘贴新数据,因为Irather在代码中执行所有这些操作后进行格式化(我也准备好了基本演示文稿)。但我需要能够粘贴数据。

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

如果重要的话,我正在使用Office 2010.

提前感谢任何可以帮助我的人。

马里奥

子测试()

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.

'如果我在单步执行代码时切换窗口,我可以看到数据被选中和复制。只是粘贴部分无效。

ws.Range("A1").Paste

2 个答案:

答案 0 :(得分:1)

感谢你们发布这篇文章,因为这是我很难找到自己的东西!这是一个已清理的代码版本,其中包含所做的更改,以便您可以拖放它并准备好(例如声明变量和调整以使代码正常工作)

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 :(得分:0)

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

由于源和目标都是excel范围,因此以下内容将起作用:

ws.Range("A1:D6").Value = Range("A1:D6").Value
相关问题