그룹화된 자동 모양에 대해 그룹 해제하지 않고 처리
하고 싶은 일
그룹화 된 모양에 대해 그룹을 해제하지 않고 처리를 수행하고 싶습니다.
특히, 그룹화된 도형이 더 그룹화되는 경우를 포함하여 처리하고자 한다.
참고: 모든 그룹 해제
다음의 링크처에서는, 그룹화 된 오토셰이프·도형을 모두 그룹 해제하는 매크로입니다.
그룹화된 도형이 더 그룹화된 경우에도 모두 그룹을 해제할 수 있습니다.
htps //w w. 레에 f. jp / cs / 018401. HTML
그룹화된 객체에 대해 루프하는 매크로
이하의 매크로의 「각 Shape에 대한 처리」라고 하는 코멘트에, 각 오토 셰이프에 대해서 실시하고 싶은 처리를 쓰면 됩니다.
이번에는, 오토 셰이프의 명칭을 디버그 프린트에 내보내는 코드로 했습니다.
Module1
Public Sub loopGroupedShape()
Dim shp As Shape
Dim gr_shp As Shape
Dim gr As Collection
Set gr = New Collection
For Each shp In ActiveSheet.Shapes
If shp.Type = msoGroup Then
gr.Add shp
Else
'各Shapeに対する処理
Debug.Print shp.Name
End If
Next
Do While gr.Count > 0
For Each gr_shp In gr
For Each shp In gr_shp.GroupItems
If shp.Type = msoGroup Then
gr.Add shp
Else
'各Shapeに対する処理
Debug.Print shp.Name
End If
Next
gr.Remove 1
Next
Loop
End Sub
사용 예
매크로 실행 대상
다음과 같이 그룹화된 도형에 대해 위의 매크로를 실행합니다.
계층 1
계층 2
계층 3
계층 4
매크로 실행 결과
즉각적인 창에 그룹화된 모든 도형의 이름이 표시되었습니다.
이 때 매크로 실행 후에도 그룹화는 해제되지 않습니다.
PowerPoint 버전
마찬가지로 PowerPoint에서도 Group화한 도형에 대한 처리를 할 수 있습니다.
PowerPoint의 경우 루프 방식을 조금 바꿉니다.
Module1
Public Sub loopGroupedShape_PPT()
Dim sld As Slide
Dim shp As Shape
Dim gr_shp As Shape
Dim gr As Collection
Set gr = New Collection
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.Type = msoGroup Then
gr.Add shp
Else
'各Shapeに対する処理
Debug.Print shp.Name
End If
Next
Next
Do While gr.Count > 0
For Each gr_shp In gr
For Each shp In gr_shp.GroupItems
If shp.Type = msoGroup Then
gr.Add shp
Else
'各Shapeに対する処理
Debug.Print shp.Name
End If
Next
gr.Remove 1
Next
Loop
End Sub
Reference
이 문제에 관하여(그룹화된 자동 모양에 대해 그룹 해제하지 않고 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Umaremin/items/b7726fa7340c7f175e77텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)