[CDR 2017-2021] Как извлечь объект из группы?

nagris

Участник
Топикстартер
Сообщения
13
Реакции
0
Как извлечь объект из группы сохранив группу?

Должна получится группа без объекта и объект на том-же месте но не в группе.

Спасибо!
 

lev

Модератор
20 лет на форуме
Сообщения
2 144
Реакции
2 067
Ctrl+X Ctrl+V

Но раз уж хочется макросом, то:
Код:
Sub ung()
  ActiveShape.OrderFrontOf ActiveShape.ParentGroup
End Sub
 
  • Спасибо
Реакции: nagris и dastin

nagris

Участник
Топикстартер
Сообщения
13
Реакции
0
Спасибо!

уточнение

есть на листе несколько групп, надо найти в группе определенный шейп и извлечь его из группы

я сделал через cut > past (разбивая группу и потом группируя обратно, но без нужного шейпа), но работает не быстро, возможно с конструкцией выше ускорить код?
 

nagris

Участник
Топикстартер
Сообщения
13
Реакции
0
какие клики?

макросом надо, мы в разделе автоматизация, а не рукоприкладство
 

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 143
Реакции
2 041
маленько добавлю ...
Код:
Sub ung()
Dim s As Shape, g As Shape
Set s = ActiveShape
ag:
  s.OrderFrontOf s.ParentGroup
    Set g = s.ParentGroup
  If g Is Nothing Then
  s.CreateSelection
    Exit Sub
    Else
    g.CreateSelection
    GoTo ag:
  End If
End Sub
выбранный шейп вытащит из всех вложенных групп, разместит поверх групп в которые он входил и выделит его
1559097802555.png1559097862758.png
 
  • Спасибо
Реакции: nagris

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 183
Реакции
10 843
Спасибо!

уточнение

есть на листе несколько групп, надо найти в группе определенный шейп и извлечь его из группы

я сделал через cut > past (разбивая группу и потом группируя обратно, но без нужного шейпа), но работает не быстро, возможно с конструкцией выше ускорить код?
По какому признаку найти?
 
  • Спасибо
Реакции: nagris

nagris

Участник
Топикстартер
Сообщения
13
Реакции
0
Здравствуйте!

в моем случае по цвету обводки
 

nagris

Участник
Топикстартер
Сообщения
13
Реакции
0
я сделал выделение всех объектов на листе

проход по выделенным шейпам, если группа разгруппировываю

ищу нужный шейп, вырезаю его, сгруппировываю оставшееся

вставляю шейп обратно

но работает медленно

как код выше подключить

у меня выдает ошибку

118933
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 183
Реакции
10 843
Код:
For each s in sh.Shapes
 
  • Спасибо
Реакции: nagris

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 143
Реакции
2 041
в моем случае по цвету обводки
для мадженты ...
Код:
Sub ung1()
Dim s As Shape, g As Shape, shy As New ShapeRange

    For Each s In ActiveSelection.Shapes.FindShapes(Query:="@outline.color.cmyk.m=100")
ag:
    s.OrderFrontOf s.ParentGroup
    Set g = s.ParentGroup
        If g Is Nothing Then
            shy.Add s
        Else
        GoTo ag:
        End If
    Next
shy.CreateSelection
End Sub
найдёт в выделенном шейпы с аутлайном 0,100,0,0 - вытащит их из групп и выделит все по завершению
 
  • Спасибо
Реакции: nagris