2016-07-18 3 views
0

Я пытаюсь отредактировать исходные данные на предварительно отформатированной диаграмме водопада в PowerPoint. Однако при попытке доступа к свойству .ChartData.Workbook код падает.Редактировать исходные данные в embeddet График Office 2016

код аварий на первой линии:

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

Код отлично работает на старых картах.

Заранее спасибо.

+1

Я не завидую тебе за все неприятности водоплавающей l дал вам график. Вы должны попытаться получить свободный год от Microsoft для всех своих проблем: P – RGA

ответ

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