2017-02-21 20 views
3

Кто-нибудь знает, как разгруппировать элемент SmartArt через VBA?VBA ungroup Shape (SmartArt)

Sub UngroupSmartArt() 

Dim shapeWithSmartArt As Shape 
Set shapeWithSmartArt = ActivePresentation.Slides(2).Shapes(2) 

shapeWithSmartArt.Ungroup 

End Sub 

Я получаю сообщение об ошибке для этого кода: «Этот элемент может быть доступен только для группы.»

Это не имеет никакого смысла для меня, потому что это легко сделать в самой PowerPoint (щелкните правой кнопкой мыши по SmartArt -> Group -> Ungroup). Это сводит меня с ума :)

Может ли кто-нибудь помочь мне с разгруппировкой элемента/формы SmartArt?

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

Пожалуйста, помогите мне. Я бы очень признателен за любую помощь!

ответ

0

Это просто невозможно сделать с помощью кода VB. Это также утверждение от Microsoft. Недостатком использования SmartArt является то, что пользователь не может записывать какие-либо действия с помощью макроса (используя Excel), которые выполняются для этого типа объекта/элемента.

Также невозможно изменить свойство ширины или высоты узлов SmartArt через VB, на самом деле это было причиной, по которой я хотел изменить элемент SmartArt в фигуры, поскольку вы можете легко изменить свойство ширины и высоты формы с помощью кода.

Microsoft и их разработчики должны действительно подумать о том, чтобы сделать элемент SmarArt более удобным для разработчиков, потому что я заметил, что я не единственный из этих проблем.

EDIT: Решение найдено! Существует способ выполнить команды с ленты powerpoint. Сначала нужно выбрать свою фигуру, затем выполнить CommandBars.ExecuteMso с действием: SmartArtConvertToShapes.

Sub UngroupSmartArt() 

Dim shapeWithSmartArt As Shape 
Set shapeWithSmartArt = ActivePresentation.Slides(2).Shapes(2) 

shapeWithSmartArt.Select 
CommandBars.ExecuteMso("SmartArtConvertToShapes") 

End Sub 

Это еще не меняет тот факт, и мою точку зрения: Microsoft действительно должна рассмотреть, чтобы сделать SmartArt элемента более дружественным к разработчикам!

+0

Удивительно, но я обнаружил, что в этом вопросе может быть доступ к узлам подробнее (http://stackoverflow.com/questions/42400785/powerpoint-vba-move-chldnode-of-vertical-block-list- to-the-left/42415565 # 42415565) –

+0

Я также нашел это, но это не помогло мне, когда я попытался установить свойство «ширина» узла (узел SmartArt). Это невозможно. – michael24B

+0

Решение найдено! – michael24B