如何打开现有PowerPoint图表的数据表

时间:2012-10-10 17:36:54

标签: excel-vba powerpoint-vba vba excel

我搜索得很好,似乎没有找到答案。我想更新现有powerpoint图表中的数据。到目前为止,我能够打开他的演示文稿,选择页面,但我无法通过下面的最后一行。

我需要打开数据表,以便将数据粘贴到那里。我能够使用新图表,但随后数据表立即打开,但我想使用existign图表,因为它将根据需要进行所有格式化。然后,我将在多个页面中为多个图表执行此操作,以更新新的客户组的标准预设。

有人可以展示我如何打开数据,以便我可以选择正确的单元格并粘贴我的新数据(来自Excel的数据)。由于很多原因我不想使用pasteexcel图表,我希望daa驻留在PowerPoint中。此宏从具有新数据的excel文件运行。

Sub test2()

Set rngData = Range("A1:D6")

Set ObjPPT = CreateObject("PowerPoint.Application")
Set ObjPresentation = ObjPPT.Presentations.Open("C:\Documents and Settings\ewnym5s\My Documents\Document_sample.pptx")
Set ObjSlide = ObjPresentation.Slides(1)
Set mychart = ObjSlide.Shapes("Chart 1").Chart
mychart.Select

Set wb = mychart.ChartData
Set ws = wb.Worksheets(1)

1 个答案:

答案 0 :(得分:7)

要打开数据表,您必须选择形状,然后激活chartdata。然后您可以访问工作簿。我用一些评论稍微修改了你的代码

  Sub test2()

    Set rngData = Range("A1:D6")

    Set ObjPPT = CreateObject("PowerPoint.Application")
    Set ObjPresentation = ObjPPT.Presentations.Open("C:\Documents and Settings\ewnym5s\My Documents\Document_sample.pptx")
    Set ObjSlide = ObjPresentation.Slides(1)
    Set mychart = ObjSlide.Shapes("Chart 1").Chart
    mychart.Select

    'Activate the chart data
    mychart.ChartData.Activate
    'Retrieve the workbook.
    Set wb = mychart.ChartData.Workbook
    Set ws = wb.Worksheets(1)

    'Do stuff with the workbook then close with save
    wb.Close True
  end Sub

如果您不知道这一点,当您激活chartdata时Excel将打开以显示工作簿。如果使用此方法,则无法避免至少闪烁。要使闪烁尽可能简短,您可以添加wb.parent.Visible = false。如果您无法忍受闪烁,我指出possible work around in this thread,但它需要使用OLEObjects和旧控件。