【问题标题】:Pasting excel data into a powerpoint chart data sheet将 excel 数据粘贴到 powerpoint 图表数据表中
【发布时间】:2012-10-10 13:30:05
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: vba excel powerpoint


    【解决方案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
    

    【讨论】:

    • 您好@Lynxhazard,运行代码时出现“未定义用户定义类型”错误。我添加了对 Microsoft PowerPoint 库的引用,所以我不确定为什么会这样。
    【解决方案2】:

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

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

    ws.Range("A1:D6").Value = Range("A1:D6").Value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 2014-10-15
      • 2010-11-08
      • 2020-12-21
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      相关资源
      最近更新 更多