Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 同じ色の図形・オートシェイプを選択するPowerPointマクロ

同じ色の図形・オートシェイプを選択するPowerPointマクロ

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010, PowerPoint2013

人力検索はてなで、
パワーポイントで同じ色のオートシェイプを形状に関係なく選択する方法(マクロのソースコードなど)をお教えください...
という質問と回答があるのに気づきました。

図形が大量に配置されているプレゼンテーション資料を編集する場合、図形の色を変更しようと思うと結構面倒です。

少しでも楽をしようとする場合、まず一つの図形の色を変更して、その後は[F4]キーで色の変更作業を繰り返すのでしょうか。

あるいは同じ色の図形を全部選択しておいてから、色をまとめて変更しようと考える方もいらっしゃるでしょう。この場合、うっかり別の色の図形を選択してしまうと、その解除作業にイライラさせられることになります。

そのため、同じ色の図形を全部選択するマクロが欲しいという要望が出るのは、とても納得できることです。

[スポンサードリンク]

この質問に対する回答として人力検索はてなでは、図形の名前を配列変数に格納して、最後に一気に選択するというコードが紹介されています。

しかし、配列はプログラミング初心者の方にとって難易度は決して低くありません。

そこでここでは配列を使わず、アクティブなスライド上で、選択されている図形と同じ色の図形をすべて選択するマクロをご紹介しておきます。

Sub 選択されている図形と同じ色の図形をすべて選択する()

 Dim shp As Shape
 Dim rgb_num As Long
 
 With ActiveWindow.Selection

  If .Type = ppSelectionNone _
  Or .Type = ppSelectionSlides Then Exit Sub

  If .Type = ppSelectionText Then .ShapeRange.Select

  rgb_num = .ShapeRange.Fill.ForeColor.RGB

  For Each shp In .SlideRange.Shapes
   If shp.Fill.ForeColor.RGB = rgb_num Then
    shp.Select Replace:=msoFalse
   End If
  Next shp

 End With

End Sub

メインの処理は、選択されている図形の塗りつぶし色を変数に格納する部分からです。
  rgb_num = .ShapeRange.Fill.ForeColor.RGB

アクティブスライド上の全図形に対してループを回して、
  For Each shp In .SlideRange.Shapes

塗りつぶし色が、選択されている図形と同じなら
   If shp.Fill.ForeColor.RGB = rgb_num Then

その図形を選択しています。
    shp.Select Replace:=msoFalse

ShapeオブジェクトのSelectメソッドは、引数ReplaceにmsoFalseを指定することで、既に選択されているShapeの選択を解除せずに、追加する形で選択することができます。

この引数を使えば、人力検索はてなの回答者さんのように配列を使わなくても、選択することが可能になります。

メインの処理に入る前に、
選択されているものがない場合、スライドが選択されている場合はSubプロシージャ自体を終了しています。
  If .Type = ppSelectionNone _
  Or .Type = ppSelectionSlides Then Exit Sub

図形の中にカーソルがあるテキスト編集モードになっていると、バージョンによって上手く動作しないことがあるので、テキスト編集モードの場合は事前にその図形を選択しています。
  If .Type = ppSelectionText Then .ShapeRange.Select

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

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 同じ色の図形・オートシェイプを選択するPowerPointマクロ

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

検索


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

.