从PowerPoint幻灯片(编程)检索Excel图表数据

背景

在PowerPoint中工作时,我总是使用位于图表后面的Excel电子表格,并链接到源工作簿。 该方法确保:

  1. 文件后面的数据源很容易识别(链接到networking)。
  2. PowerPoint文件可以根据需要直接编辑。
  3. 通过将基础电子表格重新链接到源工作簿,可以更新新图表的方法。

问题

最近我遇到了一个PowerPoint文件,我需要使用这些数据来创build一个新的图表。 不知何故,即使使用上述方法创build图表,底层数据也无法访问。 我不希望我的小组手动检索数据,所以我寻找一种方法,我可以再次使用,如果情况rec-occurrence。

第一种方法

我结束了遵循magicbeanlab概述的方法,其中涉及:

  • 切割PPT文件到一张幻灯片(我想要的图表)。
  • 将该PPT文件重命名为zip
  • 导航到/ppt/charts/目录以xml格式获取图表。
  • 打开提供访问数据的XML文件,但这是其他信息的海洋之中。

什么是更好的方法(自动执行XML检索)或使用VBA获取图表数据以便在别处使用?

安迪·波普提供了这个答案,从PowerPoint图表中提取数据到剪贴板。

在这一点上,它可以直接丢弃到Excel中。

好的工作安迪。

 Sub RipChartValues() Dim cht As PowerPoint.Chart Dim seriesIndex As Long Dim labels As Variant Dim values As Variant Dim name As String Dim buffer As String Dim objData As Object Set cht = ActiveWindow.Selection.ShapeRange.Parent.Shapes(ActiveWindow.Selection.ShapeRange.name).Chart With cht For seriesIndex = 1 To .SeriesCollection.Count name = .SeriesCollection(seriesIndex).name labels = .SeriesCollection(seriesIndex).XValues values = .SeriesCollection(seriesIndex).values If seriesIndex = 1 Then buffer = vbTab & Join(labels, vbTab) & vbCrLf buffer = buffer & (name & vbTab & Join(values, vbTab) & vbCrLf) Next End With On Error Resume Next ' Rory's late bind example ' this is a late bound MSForms.DataObject Set objData = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") ' copy current cell formula to clipboard With objData .SetText buffer .PutInClipboard MsgBox "Data extracted to clipboard!", vbOKOnly, "Success" End With End Sub