首页 文章

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

提问于
浏览
1

我希望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

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

    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

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

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

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

相关问题