【问题标题】:How to Open Datasheet for Existing PowerPoint Chart如何打开现有 PowerPoint 图表的数据表
【发布时间】:2012-10-10 17:36:53
【问题描述】:

我进行了广泛的搜索,但似乎没有找到答案。我想更新现有 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)

【问题讨论】:

    标签: excel powerpoint vba


    【解决方案1】:

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

      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。如果您无法忍受闪烁,我指出了possible work around in this thread,但它需要使用 OLEObjects 和较旧的控件。

    【讨论】:

    • 你能推荐一本很好的 vba 书,它不仅可以作为参考来解释模型吗?
    • 其实我做不到。我从未见过我认为有用的 VBA 书籍。大多数书都涵盖了基本的东西,这有点偏离常规。如果您想了解有关特定方法、对象等的更多信息……您最好的资源是您正在使用的程序中的帮助文件或互联网。
    • 看起来您可以避免闪烁,但在激活之前确保工作簿已经在不可见的 Excel 实例中打开。为此,请考虑调查 Shape.LinkFormat.SourceFullName 属性,然后调暗 Excel.Application 实例(将使用 visible=false 创建),并在其中打开工作簿。编辑:不需要这样做来激活数据。您只需访问它,内置方法就会处理识别工作簿在内存中的位置。但是,您需要在父形状实体上调用 Shape.LinkFormat.Update()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多