1

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

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

我相信我没有正确引用 sorce excel 表,因此 VBA 正在被混淆(应该如此)。有人可以解释我是怎么做到的。

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

这个网站和其他地方有很多关于如何将图表从 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
4

2 回答 2

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
于 2015-04-13T16:24:27.223 回答
0

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

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

ws.Range("A1:D6").Value = Range("A1:D6").Value
于 2012-10-11T10:13:35.723 回答