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

jobtbby3  于 2023-03-31  发布在  其他
关注(0)|答案(2)|浏览(195)

背景

在PowerPoint中工作时,我总是使用直接位于图表后面的Excel电子表格,并链接到源工作簿。这种方法可以确保:
1.文件背后的数据源很容易识别(链接到网络)。
1.如果需要,可以直接编辑PowerPoint文件。
1.通过将基础电子表格重新链接到源工作簿,可以针对新方案更新图表。
问题***
最近,我遇到了一个PowerPoint文件,我需要使用数据来创建一个新的图表。不知何故,即使图表已经使用我上面描述的方法创建,底层数据无法访问。我不希望我的团队手动检索数据,所以我寻找一种方法,如果情况再次发生,我可以再次使用。

第一方法

我最终遵循了magicbeanlab中概述的方法,其中包括:

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

哪种方法更好(自动化XML检索)或使用VBA来获取图表数据以在其他地方使用?

umuewwlo

umuewwlo1#

Andy Pope提供了这个答案,它从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
nnt7mjpx

nnt7mjpx2#

有一个网站https://www.dataxtractr.com/pptx,我做的,从PowerPoint图表中提取图表数据,并让你下载它.这个问题是一对夫妇岁,但想通(NPI)其他人可能在同一条船上.

相关问题