Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » SmartArtを図形に変換してグループ解除するPowerPointマクロ

SmartArtを図形に変換してグループ解除するPowerPointマクロ

対象:PowerPoint2010, PowerPoint2013, Windows版PowerPoint2016

SmartArtを図形に変換してグループ解除するPowerPointマクロ

バージョン・2010以降のPowerPointに用意されている、SmartArtを図形に変換するコマンドをご紹介しました。

[図形に変換]コマンドでSmartArtから変換された図形はグループ化された状態になっています。ですが、わざわざShapeに変換したということは、その後、個々のShapeに対して何らかの手作業を行うことになるはずです。

[スポンサードリンク]

そんなときに使えるPowerPointマクロを作ってみました。

SmartArtをShapeに変換してグループ解除するサンプルマクロ

SmartArtを図形に変換して、グループ解除までを一気に行うマクロです。

Sub SmartArtをShapeに変換してグループ解除する()
 Dim shp As Shape

 With ActiveWindow.Selection
  For Each shp In .SlideRange.Shapes

   If shp.HasSmartArt Then
    shp.Select
    Application.CommandBars.ExecuteMso _
      "SmartArtConvertToShapes"
    .ShapeRange.Ungroup
    Exit For
   End If

  Next shp
 End With
End Sub

上記のマクロを実行すると、アクティブスライド上の一つ目のSmartArtが図形に変換され、グループ解除が行われます。

サンプルマクロの解説

アクティブなスライド上の、全Shapeを対象としてFor~Each Nextループを回して、
 With ActiveWindow.Selection
  For Each shp In .SlideRange.Shapes
SmartArtだったときに、
   If shp.HasSmartArt Then
そのSmartArtを選択して、
    shp.Select
CommandBars.ExecuteMsoメソッドの引数に[図形に変換]を表す「SmartArtConvertToShapes」を指定して実行し、
    Application.CommandBars.ExecuteMso _
      "SmartArtConvertToShapes"
グループ解除を行って、
    .ShapeRange.Ungroup
For Each~Nextループを抜けています。
    Exit For

SmartArtオブジェクトに「SmartArtConvertToShapes」「ConvertToShapes」といった名前のメソッドがあってもよさそうなのですが、

SmartArtを図形に変換してグループ解除するPowerPointマクロ

それらしきメソッドが残念ながら見当たらないためCommandBars.ExecuteMsoメソッドを利用したマクロにしました。

CommandBars.ExecuteMsoメソッドはFunctionプロシージャではなく何も返さないSubプロシージャですので、
    shp.Select
と、事前に選択を行っておいてからCommandBars.ExecuteMsoメソッドを実行してその後、
    .ShapeRange.Ungroup
グループ解除を行っています。

PowerPoint VBA入門講座へのアンケートから

ExcelマクロユーザーのためのPowerPoint VBA入門講座』を開催するにあたって、PowerPointでどんな処理を行うときにマクロを使えたら便利と感じますか?か、というアンケートを採らせていただきました。

そのアンケートの中に
「テキストデータやプレースホルダーに入力された文字列を図形に変換したい」
というSmartArtがイマイチであることに起因する要望がありました。

ご要望どおり、テキストデータやプレースホルダーに入力された文字列から図形を作成するマクロもありですが、最終的に作成したい図版の複雑さによっては、SmartArtを図形に変換して流用するという考え方もあるように感じます。
その場合に今回ご紹介したマクロは使えるのではないかと考えています。

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » SmartArtを図形に変換してグループ解除するPowerPointマクロ

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

検索


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

.