みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
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プロパティを使います。
書式はコチラです。
SlideRangeオブジェクトと同じノリですね。
ShapeRangeオブジェクトを操作する例
例として、以下のプロシージャを書いてみましょう。
Sub 選択したシェイプの取得()
With ActiveWindow.Selection
If .Type >= ppSelectionShapes Then
Debug.Print "選択シェイプ数: " & .ShapeRange.Count
.ShapeRange.Duplicate
End If
End With
End Sub
以下のようにシェイプを選択している状態で実行をすると…
イミディエイトウィンドウには「選択シェイプ数: 2」と出力され、以下のように選択シェイプのみが複製されます。
もうおわかりと思いますが、プロシージャ内のCountプロパティはShapeRangeオブジェクトに含まれるシェイプの数を表すプロパティです。
また、Duplicateメソッドはシェイプ範囲に含まれるシェイプを複製するメソッドになります。
シェイプが単一でないと使えないメンバーもある
以下のコードは、選択しているシェイプの名前をイミディエイトウィンドウに出力するものです。
Sub 選択したシェイプの名前()
With ActiveWindow.Selection
If .Type >= ppSelectionShapes Then
Debug.Print "選択シェイプの名前: " & .ShapeRange.Name
End If
End With
End Sub
Nameプロパティは選択シェイプのシェイプ名を取得するプロパティです。
ですが、このプロパティは選択シェイプが単一のときでないと以下のようなエラーが出てしまいます。
このように、シェイプ数が単一でないとエラーになるメンバーもありますので、Countプロパティで判定処理を入れるなどをして、使用をするようにしてくださいね。
まとめ
以上、PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクトについて紹介しました。
選択している複数のシェイプについて様々な操作をすることができる非常に有用なオブジェクトです。ぜひ、使いこなしたいですね。
ただ、選択しているのが単一のシェイプでないと機能しないメンバーもありますが、その点は注意が必要です。
次回は、選択しているシェイプ範囲についてフォントを変更するマクロの作り方について紹介をしていきます。
どうぞお楽しみに!
連載目次:初心者向けPowerPoint VBAで選択箇所を操作する
PowerPointでプレゼンテーションを作っている際に、「選択している部分のフォントを好きに変えたい!」ということありますよね。そのニーズに応えるマクロの作り方をシリーズでお伝えしていきます。- PowerPoint VBAでアクティブなウィンドウを取得する方法
- PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得
- PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!
- PowerPoint VBAで選択しているスライドを操作するSlideRangeオブジェクト
- PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方
- PowerPoint VBAで選択しているシェイプを操作するShapeRangeオブジェクト
- PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方
- PowerPoint VBAで選択しているテキスト範囲のフォントを変更するマクロの作り方
- PowerPoint VBAで選択した部分を判別してそのフォントを変更するマクロ
- PowerPoint VBAでフォームボタンからマクロを実行する方法