我正在尝试将源数据编辑为PowerPoint中预格式化的瀑布图。但是,尝试访问.ChartData.Workbook属性时代码崩溃。
代码在第一行崩溃:
Set wbChart = cfSlide.Shapes("CFChart").chart.ChartData.Workbook
Set wsChart = wbChart.Worksheets(1)
代码在旧图表上完美运行。
提前致谢。
答案 0 :(得分:0)
从2007年开始,我认为有必要Activate
工作簿。这是一个非常糟糕的设计/实现,但根据我的经验,这是必要的。
cfSlide.Shapes("CFChart").chart.ChartData.Workbook.Activate
Set wbChart = cfSlide.Shapes("CFChart").chart.ChartData.Workbook
wbChart.Application.WindowState = -4140 '## Minimizes Excel
Set wsChart = wbChart.Worksheets(1)
这会变得很讨厌,因为这样你必须最小化它和/或.Close
以最小化UI中断。我希望立即将其最小化,并在完成后将其关闭,您可以wbChart.Close
我想我已经在其他地方读过你可以通过使用With
块来避免这种情况,但我还是无法成功实现这一点,例如:
With cfSlide.Shapes("CFChart").chart.ChartData.Workbook
Set wsChart = .Worksheets(1)
' etc...
End With
答案 1 :(得分:0)
2016年,Powerpoint有办法访问图表背后的数据(不是Excel嵌入对象)XLWorkbook是保存新数据的Excel文件
For Each oSH In ActivePresentation.Slides(2).Shapes
With oSH.Chart.ChartData
'this updates the values in the datasheet
.Workbook.sheets(1).Range("A1:B" & lastrow ).Value = xlWorkBook.sheets(2).Range("A3:B" & lastrow).Value
End With