背景
在PowerPoint中工作时,我总是使用位于图表后面的Excel电子表格,并链接到源工作簿。这一方法确保:
问题
最近,我遇到了一个PowerPoint文件,我需要使用这些数据来创建一个新的图表。尽管图表是使用我前面描述的方法创建的,但无法访问底层数据。我不希望我的组手动检索数据,所以我寻找一个方法,如果情况发生,我可以再次使用该方法。
优先逼近
最后,我遵循了魔芋概述的方法,其中包括:
/ppt/charts/目录以获得xml格式的图表。问题
有什么更好的方法(自动化XML检索)或使用VBA获取其他地方使用的图表数据?
发布于 2016-04-16 07:38:05
安迪·波普提供了这个答案,它将数据从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 Subhttps://stackoverflow.com/questions/36661499
复制相似问题