みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
PowerPoint VBAで選択している部分を操作するマクロの作り方をお伝えしています。
前回の記事はコチラ。
「選択の部分」を表すSelectionオブジェクトの4つの状態についてお伝えしました。
シリーズとしては「選択しているシェイプのフォントを変更する」を目標に進めていくのですが、せっかくなのでSelectionオブジェクトからスライド、シェイプ、テキストをそれぞれ取得する方法を見ていきましょう。
まずは、スライドですね。
PowerPoint VBAで選択しているスライド範囲を操作するSlideRangeオブジェクトについて紹介していきます。
では、行ってみましょう!
前回のおさらい
前回作成したコードをおさらいしておきましょう。
コチラです。
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
アクティブなウィンドウから選択している部分を表すSelectionオブジェクトを取得、そしてその選択の状態をTypeプロパティで判定するというプロシージャです。
選択しているスライドを操作する
SlideRangeオブジェクトとは
PowerPoint VBAでは「選択しているスライド」を表すSlideRangeオブジェクトというオブジェクトが用意されています。
また、スライドの選択は複数である可能性もありますので、SlideRangeオブジェクトは2つ以上のスライドを表すこともあります。
SlideRangeオブジェクトを使うことで、選択しているスライド全てについてコピーや削除などの操作をしたり、ループを使ってSlideRangeに含まれるスライド一つ一つに対して処理をするというような使い方も可能です。
SlideRangeプロパティでスライド範囲を取得する
では、SlideRangeオブジェクトを取得してみましょう。
Selectionオブジェクトに対して、SlideRangeプロパティを使います。
簡単ですね。
SlideRangeオブジェクトを操作する例
では、例として以下のプロシージャを実行してみましょう。
Sub 選択したスライドの取得()
With ActiveWindow.Selection
If .Type >= ppSelectionSlides Then
Debug.Print "選択スライド数: " & .SlideRange.Count
.SlideRange.Duplicate
End If
End With
End Sub
4行目でTypeプロパティを確認して、スライドが選択されているか判定を入れています。選択されていれば、5,6行目の処理を実行します。
以下のように選択スライドがつのときに実行をすると…
選択されているスライドが全て複製がされ、イミディエイトウィンドウには「選択スライド数: 2」と出力されます。
使用しているプロパティ、メソッドを紹介します。
Countプロパティは、SlideRangeオブジェクトに含まれるスライドの数を表します。
また、DuplicateメソッドはSlideRangeオブジェクトに含まれるスライドを複製します。
スライドが単一でないと使えないメンバーもある
以下のコードですが、選択スライドが単一であるときは、そのスライドのインデックスがイミディエイトウィンドウに出力されます。
Sub 選択したスライドのインデックス()
With ActiveWindow.Selection
If .Type >= ppSelectionSlides Then
Debug.Print "選択しているスライドのインデックス: " & .SlideRange.SlideIndex
End If
End With
End Sub
SlideIndexプロパティは、スライド範囲のインデックスを取得するプロパティです。
ただし、複数のスライドを選択しているときは、以下の実行時エラーが発生します。
このように、スライドの数が単一でないとエラーになるメンバーもあります。
その場合は、Countプロパティによる判定処理を入れるなど、エラーが起きないようにする必要がありますね。
まとめ
以上、PowerPoint VBAで選択しているスライド範囲を操作するSlideRangeオブジェクトについて解説しました。
選択スライドを一気に操作できるので、なかなか強力です。
ただ、スライドの数に応じて使えるメンバーが限られることがありますので、注意が必要ですね。
次回は、選択スライドのフォントを変更するマクロを紹介していきます。
どうぞお楽しみに!
連載目次:初心者向け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でフォームボタンからマクロを実行する方法