2017-01-10 5 views
0

Я искал часы, чтобы попытаться найти ответ на этот вопрос, но безуспешно, поэтому я надеюсь, что смогу найти ответ здесь.Ссылка на диаграммы По имени Только в PowerPoint VBA

Я хочу создать переменную, которая относится к ранее существующей диаграмме в PowerPoint, поэтому я могу начать автоматизировать ее данные. Я хочу сослаться на диаграмму по ее названию, чтобы сделать вещи очень легкими, но независимо от того, что я делаю, я не могу показать PPT удовлетворительный адрес диаграммы.

Я попробовал почти все возможные вариации ниже, но без успеха:

Dim chrtPP As PowerPoint.Chart 

Set chrtPP = ActivePresentation.Slides(1).Shapes.Charts("Chart3") 

Может кто-то пожалуйста, скажите мне, что я делаю не так?

Спасибо!

+0

Powerpoint не га коллекция диаграмм, как это делает Excel; у него есть Shapes, а Shape может содержать диаграмму (или в случае вставленного содержимого из Excel, BE диаграмма). В вашей ситуации ActivePresentation.Slides (1) .Shapes. («Chart3») должен это сделать (т. Е. Удалить часть .Charts) –

ответ

0

Вы должны ссылаться на форму по имени («Форма» в PowerPoint - это фактически любой объект, который находится на слайде, и может быть простой формой, текстовым полем, таблицей, диаграммой, группой, медиа-клипом и т. Д.). вы находитесь в PowerPoint 2010 и выше, нажмите Alt + F10, чтобы открыть панель выбора, чтобы найти имя выбранного объекта диаграммы. Это может быть стандартный объект диаграммы или диаграмма внутри объекта-заполнителя. Затем вы можете ссылаться на график как следующим образом:

Option Explicit 

Sub ChartStuff() 
    Dim oShp As Shape 
    Dim oCht As Chart 

    Set oShp = ActivePresentation.Slides(1).Shapes("Chart 3") 
    If oShp.HasChart Then 
    Set oCht = oShp.Chart 
    End If 

    ' Do stuff with your chart 
    If oCht.HasTitle Then Debug.Print oCht.ChartTitle.Text 

    ' Clean up 
    Set oShp = Nothing 
    Set oCht = Nothing 
End Sub 

ключ в программировании PowerPoint является игнорировать имя объекта в объектной модели для «Shape», как это вводит в заблуждение