2

我进行了广泛的搜索,似乎没有找到答案。我想更新现有 powerpoint 图表中的数据。到目前为止,我可以打开他的演示文稿,选择页面,但我无法越过下面的最后一行。

我需要打开数据表,以便将数据粘贴到那里。我可以使用新图表来完成此操作,但随后数据表会立即打开,但我想使用现有图表,因为它将具有所需的所有格式。然后,我将对多个页面中的多个图表执行此操作,以更新一组新客户的标准预设。

有人可以展示我将如何打开数据表,以便我可以选择正确的单元格并粘贴我的新数据(来自 Excel)。由于许多原因我不想粘贴excel图表,我希望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)
4

1 回答 1

7

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

  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

如果您不知道这一点,当您激活图表数据时,Excel 将打开以显示工作簿。如果使用此方法,则无法避免它至少闪烁。为了使闪烁尽可能简短,您可以添加wb.parent.Visible = false. 如果你不能忍受闪烁,我在这个线程中指出了一个可能的解决方法,但它需要使用 OLEObjects 和旧控件。

于 2012-10-10T23:49:20.593 回答