Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » グループ化されたオートシェイプ・図形をすべてグループ解除するExcelマクロ

グループ化されたオートシェイプ・図形をすべてグループ解除するExcelマクロ

対象:Excel2003, Excel2007, Excel2010, Excel2013

グループ化されたオートシェイプ・図形をすべてグループ解除するエクセルマクロ

Excelでグループ化されたオートシェイプ・図形が大量に存在するときに、それらを一気にグループ解除したいということがあります。

単純にグループ化されているだけならいいのですが、グループ化されている図形が更にグループ化されているようなときに、手作業で解除をしようとするとかなり面倒です。

[スポンサードリンク]

全グループ化解除を行うサンプルマクロ

以下のようなマクロで、ワークシート上のグループ化されている図形がすべてグループ解除できます。


Sub アクティブシート上のグループ化図形をすべてグループ解除する()
 Dim has_grp As Boolean ''グループ化図形があることを示すフラグ
 Dim shp As Shape

 has_grp = True
 Do While has_grp
  For Each shp In ActiveSheet.Shapes   
   If shp.Type = msoGroup Then
    has_grp = True
    shp.Ungroup
   Else
    has_grp = False
   End If  
  Next shp 
 Loop
End Sub

サンプルマクロの解説

単純にグループ化されたオートシェイプ・図形が存在しているだけなら、
 For Each shp In ActiveSheet.Shapes
  If shp.Type = msoGroup Then
   shp.Ungroup
  End If
 Next shp
といったマクロでOKです。

厄介なのは、グループ化された図形がさらにグループ化されているようなケースです。

そんなときにも対応できるようにしたのが上記のマクロです。

グループ化されている図形があることを示すフラグが立っている間、処理し続けるDo~Loop文の中に、
 has_grp = True
 Do While has_grp

シート上のすべての図形に対してループをまわすFor Each~Nextループを入れて、
  For Each shp In ActiveSheet.Shapes

その中でグループ化の解除とフラグの変更を行っています。
   If shp.Type = msoGroup Then
    has_grp = True
    shp.Ungroup
   Else
    has_grp = False
   End If
  Next shp 
 Loop

関連語句
VBA, Visual Basic for Applications
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » グループ化されたオートシェイプ・図形をすべてグループ解除するExcelマクロ

TrackBack:3

TrackBack URL
選択したセル範囲に含まれる図形を削除するマクロ from インストラクターのネタ帳
選択したセル範囲に含まれる図形を削除するExcelマクロをご紹介しています。
グループ化された図形・オートシェイプをグループ解除するパワポマクロ from インストラクターのネタ帳
PowerPoint(パワーポイント)で、アクティブスライド上のグループ化されている図形を、すべてグループ解除するマクロをご紹介しています。
図形・オ-トシェイプのグループ化解除を行うWordマクロ from インストラクターのネタ帳
アクティブなページ上のグループ化された図形・オートシェイプのグループ解除を行うWord(ワード)マクロをご紹介しています。

Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » グループ化されたオートシェイプ・図形をすべてグループ解除するExcelマクロ

「Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.