パワーポイントで同じ色のオートシェイプを形状に関係なく選択する方法(マクロのソースコードなど)をお教えください。また、同じ色で同じ形状のオートシェイプのみを選択する方法もすぐにわかれば合わせてお願いできると助かります。

回答の条件
  • 1人2回まで
  • 登録:2008/04/10 11:50:54
  • 終了:2008/04/10 20:00:57

ベストアンサー

id:bmax No.1

bmax回答回数67ベストアンサー獲得回数162008/04/10 17:45:48

ポイント80pt

選択中のスライドを対象に以下の操作を実行します。

選択中のオートシェイプと同じ色のシェイプを一括選択。

Sub SelectSameColor()


  Dim myShape As Shape

  Dim ShapesCount As Integer

  Dim ArrayIndex As Integer


  ShapesCount = ActiveWindow.Selection.SlideRange.Shapes.Count

  ArrayIndex = 0

  ReDim ShapesArray(1 To ShapesCount)


  For i = 1 To ShapesCount

    If ActiveWindow.Selection.SlideRange.Shapes.Item(i).Fill.ForeColor = ActiveWindow.Selection.ShapeRange.Fill.ForeColor Then

      ArrayIndex = ArrayIndex + 1

      ShapesArray(ArrayIndex) = ActiveWindow.Selection.SlideRange.Shapes.Item(i).Name

    End If

  Next



  ActiveWindow.Selection.SlideRange.Shapes.Range(ShapesArray).Select


End Sub


選択中のオートシェイプと同じ色で同じ形状のシェイプを一括選択。

Sub SelectSameColorAndType()


  Dim myShape As Shape

  Dim ShapesCount As Integer

  Dim ArrayIndex As Integer


  ShapesCount = ActiveWindow.Selection.SlideRange.Shapes.Count

  ArrayIndex = 0

  ReDim ShapesArray(1 To ShapesCount)


  For i = 1 To ShapesCount

    If ActiveWindow.Selection.SlideRange.Shapes.Item(i).Fill.ForeColor = ActiveWindow.Selection.ShapeRange.Fill.ForeColor _

    And ActiveWindow.Selection.SlideRange.Shapes.Item(i).AutoShapeType = ActiveWindow.Selection.ShapeRange.AutoShapeType Then

      ArrayIndex = ArrayIndex + 1

      ShapesArray(ArrayIndex) = ActiveWindow.Selection.SlideRange.Shapes.Item(i).Name

    End If

  Next



  ActiveWindow.Selection.SlideRange.Shapes.Range(ShapesArray).Select


End Sub

id:sterna

ありがとうございます。これは大変便利です!

ラインの場合でも使えるように、ラインまたは枠の色が同じものだけについて選択するものもいただけると助かります。

2008/04/10 19:31:12
  • id:bmax
    動作には影響しませんが、不要な行がありました。
    どちらのマクロからも Dim myShape As Shape の一文を削除してください。
    (最終的に使わなくなった変数の定義のため)
  • id:bmax
    >ラインの場合でも使えるように、ラインまたは枠の色が同じものだけについて選択するものもいただけると助かります。


    コードの真ん中辺りにある
     ActiveWindow.Selection.SlideRange.Shapes.Item(i).Fill.ForeColor
    および
     ActiveWindow.Selection.ShapeRange.Fill.ForeColor
    の Fill を Line に変えてください。


    ラインを含む枠線が同じものが選択されます。
    形も同じものの方を変更すれば、ラインのみ もしくは、枠線が同じ色の同じ形のもののみ といった形で選択できます。


    枠線の色も中の色も同じものといった場合は、条件をつなげて応用してください。
  • id:sterna
    ありがとうございます。エクセルでセルの数字や書式をいじる程度しか使ったことが無かったですが、これを機会にオートシェープもいじる、とっかかりになりそうです。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません