Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » グループ化された図形・オートシェイプをグループ解除するパワポマクロ

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

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

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

「パワポ グループ化 解除 vba」
「パワーポイント マクロ グループ化解除」
「powerpoint vba オートシェイプグループ化解除」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

Excelのアクティブなシート上の、グループ化されている図形・オートシェイプのグループ解除を行うマクロをご紹介しています。

「パワポ グループ化 解除 vba」
「パワーポイント マクロ グループ化解除」
「powerpoint vba オートシェイプグループ化解除」
といった検索は、このマクロのPowerPoint版を探している方によるものでしょう。

[スポンサードリンク]

Excelの全グループ化解除と同じロジックではPowerPointの場合...

既にご紹介しているExcelマクロで、
 For Each shp In ActiveSheet.Shapes
となっている部分を、例えば、
 For Each shp In ActiveWindow.Selection.SlideRange.Shapes
としてやれば、PowerPointのアクティブなスライド上で、グループ解除が行われそうなものですが、残念ながらダメです。

これだけではPowerPointの場合、グループ解除されない図形が残ってしまいます。

For Each~Nextループが、Excel VBAとPowerPoint VBAでは異なった動きをするためです。

全グループ化図形をグループ解除するサンプルマクロ

PowerPointでは以下のようなマクロにすれば、グループ化された図形の中で更にグループ化されている場合でも、すべてグループ解除されます。

Sub アクティブスライドのグループ化図形をすべてグループ解除する()
 Dim has_grp As Boolean ''グループ化された図形の存在を示すフラグ
 Dim shp As Shape

 has_grp = True
 Do While has_grp
  For Each shp _
  In ActiveWindow.Selection.SlideRange.Shapes
   If shp.Type = msoGroup Then
    has_grp = True
    shp.Ungroup
    Exit For
   Else
    has_grp = False
   End If   
  Next shp
 Loop
End Sub

Excel版とPowerPoint版の違い

パッと見ただけでは、基本的な処理は、Excel版のグループ解除マクロと同じに見えるかもしれません。

どこが違うかというと、グループ化されている図形が見つかったときの、
   If shp.Type = msoGroup Then
    has_grp = True
    shp.Ungroup
    Exit For
   Else
の部分です。

この部分がExcel版では、
   If shp.Type = msoGroup Then
    has_grp = True
    shp.Ungroup
   Else
となっています。

PowerPoint版では、グループ解除を行う
    shp.Ungroup
という行のあとに、
    Exit For
という行が存在する点が違っています。

つまり、グループ化された図形がみつかったら、グループ解除をしてFor Each~Nextループを抜けて、もう一度For Each~Nextループを最初からやり直しているのです。

Excelの場合こんな冗長な処理をしなくてもいいのですが、PowerPoint VBAでは、For Each~Nextループの動きがExcel VBAとは異なっているため、しつこく処理を繰り返してやらないとグループ化された図形が残ってしまいます。

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

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » グループ化された図形・オートシェイプをグループ解除するパワポマクロ

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


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

.