首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从powerpoint幻灯片中检索excel图表数据(以编程方式)

从powerpoint幻灯片中检索excel图表数据(以编程方式)
EN

Stack Overflow用户
提问于 2016-04-16 07:38:05
回答 1查看 4.3K关注 0票数 2

背景

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

  1. 文件后面的数据源易于识别(链接到网络)。
  2. 如果需要,可以直接编辑PowerPoint文件。
  3. 通过将基础电子表格重新链接到源工作簿,可以更新图表以适应新的方案。

问题

最近,我遇到了一个PowerPoint文件,我需要使用这些数据来创建一个新的图表。尽管图表是使用我前面描述的方法创建的,但无法访问底层数据。我不希望我的组手动检索数据,所以我寻找一个方法,如果情况发生,我可以再次使用该方法。

优先逼近

最后,我遵循了魔芋概述的方法,其中包括:

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

问题

有什么更好的方法(自动化XML检索)或使用VBA获取其他地方使用的图表数据?

EN

回答 1

Stack Overflow用户

发布于 2016-04-16 07:38:05

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

此时,它可以直接回退到Excel中。

干得好安迪。

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36661499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档