PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト


shape-range

photo credit: Zach K 699 Flushing Avenue via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

PowerPoint VBAで選択している部分を操作するマクロの作り方についてお伝えしています。

前回の記事はコチラ。

PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方
PowerPoint VBAで選択している部分を操作するマクロの作り方について解説をしています。今回は、選択しているスライドの全てのシェイプについてフォントを変更するマクロの作り方をお伝えします。

選択しているスライド上のフォントを変更するマクロの作り方をお伝えしました。

さて、「選択している部分」の「スライド」を操作する方法をお伝えしてきましたので、今回は「シェイプ」です。

ということで、PowerPoint VBAで選択しているシェイプ範囲を操作するShapeRangeオブジェクトについて紹介します。

では、行ってみましょう!

選択している部分の取得のおさらい

では、コチラの記事で紹介していたSelectionオブジェクトの状態を調べるプロシージャの復習からはじめましょう。

Sub 選択状態を調べる()

With ActiveWindow.Selection
    If .Type = ppSelectionNone Then Debug.Print "何も選択されていません"
    If .Type >= ppSelectionSlides Then Debug.Print "スライドが選択されています"
    If .Type >= ppSelectionShapes Then Debug.Print "シェイプが選択されています"
    If .Type >= ppSelectionText Then Debug.Print "テキスト範囲が選択されています"
End With

End Sub

アクティブなウィンドウの選択している部分について、Typeプロパティを使ってその状態を判定するプロシージャです。

シェイプが選択されていれば「シェイプが選択されています」と出力されますね。この判定を今回も使いまわします。

選択しているシェイプを操作する

ShapeRangeオブジェクトとは

PowerPoint VBAでは「選択しているシェイプ」を表すShapeRangeオブジェクトを利用することができます。

シェイプの選択は1つだけでなく、複数の場合もありますので、ShapeRangeオブジェクトは複数のシェイプを取り扱う性質を持ちます。

ShapeRangeオブジェクトはかなり多くのメンバーを持っていまして

  • 複製、コピーや削除
  • 塗りつぶしや枠線の設定
  • グループ化やグループ化解除
  • 高さや幅の変更

などなど、様々な操作をいっぺんにできる便利オブジェクトとなっております。

また、SlideRangeオブジェクトのように、含まれる各シェイプについてループを回して処理をするということも可能です。

ShapeRangeプロパティでシェイプ範囲を取得する

シェイプ範囲を取得するには、SelectionオブジェクトのShapeRangeプロパティを使います。

書式はコチラです。

Selectionオブジェクト.ShapeRange

SlideRangeオブジェクトと同じノリですね。

ShapeRangeオブジェクトを操作する例

例として、以下のプロシージャを書いてみましょう。

Sub 選択したシェイプの取得()

With ActiveWindow.Selection
    If .Type >= ppSelectionShapes Then
        Debug.Print "選択シェイプ数: " & .ShapeRange.Count
        .ShapeRange.Duplicate
    End If
End With

End Sub

以下のようにシェイプを選択している状態で実行をすると…

PowerPointでシェイプを選択

イミディエイトウィンドウには「選択シェイプ数: 2」と出力され、以下のように選択シェイプのみが複製されます。

PowerPoint VBAで選択シェイプを複製する

もうおわかりと思いますが、プロシージャ内のCountプロパティShapeRangeオブジェクトに含まれるシェイプの数を表すプロパティです。

ShapeRangeオブジェクト.Count

また、Duplicateメソッドシェイプ範囲に含まれるシェイプを複製するメソッドになります。

ShapeRangeオブジェクト.Duplicate

シェイプが単一でないと使えないメンバーもある

以下のコードは、選択しているシェイプの名前をイミディエイトウィンドウに出力するものです。

Sub 選択したシェイプの名前()

With ActiveWindow.Selection
    If .Type >= ppSelectionShapes Then
        Debug.Print "選択シェイプの名前: " & .ShapeRange.Name
    End If
End With

End Sub

Nameプロパティ選択シェイプのシェイプ名を取得するプロパティです。

ShapeRangeオブジェクト.Name

ですが、このプロパティは選択シェイプが単一のときでないと以下のようなエラーが出てしまいます。

ShapeRangeオブジェクト使用の際の実行時エラー

このように、シェイプ数が単一でないとエラーになるメンバーもありますので、Countプロパティで判定処理を入れるなどをして、使用をするようにしてくださいね。

まとめ

以上、PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクトについて紹介しました。

選択している複数のシェイプについて様々な操作をすることができる非常に有用なオブジェクトです。ぜひ、使いこなしたいですね。

ただ、選択しているのが単一のシェイプでないと機能しないメンバーもありますが、その点は注意が必要です。

次回は、選択しているシェイプ範囲についてフォントを変更するマクロの作り方について紹介をしていきます。

PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト
PowerPoint VBAで選択している部分を操作するマクロの作り方についてお伝えしています。今回は、選択しているシェイプ範囲を操作するShapeRangeオブジェクトとその使い方について紹介をします。

どうぞお楽しみに!

連載目次:初心者向けPowerPoint VBAで選択箇所を操作する

PowerPointでプレゼンテーションを作っている際に、「選択している部分のフォントを好きに変えたい!」ということありますよね。そのニーズに応えるマクロの作り方をシリーズでお伝えしていきます。
  1. PowerPoint VBAでアクティブなウィンドウを取得する方法
  2. PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得
  3. PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!
  4. PowerPoint VBAで選択しているスライドを操作するSlideRangeオブジェクト
  5. PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方
  6. PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト
  7. PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方
  8. PowerPoint VBAで選択しているテキスト範囲のフォントを変更するマクロの作り方
  9. PowerPoint VBAで選択した部分を判別してそのフォントを変更するマクロ
  10. PowerPoint VBAでフォームボタンからマクロを実行する方法

タイトルとURLをコピーしました