2016-03-04 2 views
0

У меня есть задача, в которой мне нужно импортировать много графических изображений emf, преобразовывать их в фигуры, разгруппировать и удалять обратно большинство объектов. Этот объект не нужен в том, что мы делаем. Я могу выбрать его с помощью vba, если я знаю, как его зовут, что я не думаю, что каждый раз каждый раз.Выберите самый большой объект на слайде PowerPoint с помощью

Есть ли у кого-нибудь какие-либо предложения относительно того, как я выбираю обратно самый большой объект для его удаления?

Любые предложения были бы полезными.

+0

Кажется, я не могу выбрать графику и «редактировать изображение» так же, как я могу это сделать вручную. Я пробовал называть графику и выбирать ее с именем, а затем разгруппировать ее, но ничего не работает. – Boyplunder

ответ

0
Dim oSh As Shape 
Dim oBGShape As Shape 
Dim lZorder As Long 
Dim oTempRange As ShapeRange 
Dim x As Long 

Set oSh = ActivePresentation.Slides(1).Shapes("EMFGraphic") 
lZorder = oSh.ZOrderPosition 

' oSh.Ungroup returns a shaperange 
With oSh.Ungroup 
    ' ungrouping again is usually necessary 
    ' we want the first shape in the new shaperange 
    Set oTempRange = .Ungroup 
    Set oBGShape = oTempRange(1) 
End With 

oBGShape.Fill.Visible = True 
oBGShape.Fill.ForeColor.RGB = RGB(123, 123, 123) 
oBGShape.Left = 0 

MsgBox "The bg shape should now be at the left side of the slide and gray" 

oBGShape.Delete 


    While .ZOrderPosition > lZorder 
     .ZOrder (msoSendBackward) 
    Wend 

' If you want to regroup the shapes, you'll have to add them to an array 
' after the first ungroup 
' then use something like this to send the regrouped shape to the original 
' zorder, if need be: 
'  While .ZOrderPosition > lZorder 
'  .ZOrder (msoSendBackward) 
' Wend 

Обратите внимание, что каждый раз, когда вы запускаете это, название оригинальной группы будет потерян и не будет возвращаться с ООН-Намдо, так что вам придется повторно применить имя к графику каждый раз, если это то, от чего вы зависите, чтобы работать с ним.