在embeddet Office 2016图表中编辑源数据

时间:2016-07-18 15:01:17

标签: vba excel-vba powerpoint powerpoint-vba office-2016

我正在尝试将源数据编辑为PowerPoint中预格式化的瀑布图。但是,尝试访问.ChartData.Workbook属性时代码崩溃。

代码在第一行崩溃:

Set wbChart = cfSlide.Shapes("CFChart").chart.ChartData.Workbook Set wsChart = wbChart.Worksheets(1)

代码在旧图表上完美运行。

提前致谢。

2 个答案:

答案 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