PowerPoint VBAで選択しているスライドを操作するSlideRangeオブジェクト


range

photo credit: ConanTheLibrarian Undercabinet Lighting Patterns via photopin (license)

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

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

前回の記事はコチラ。

PowerPoint VBAのSelectionオブジェクトの4つのタイプについて理解しよう!
PowerPoint VBAで選択しているシェイプのフォントを変更するマクロの作り方をお伝えしています。今回は、選択する部分を表すSelectionオブジェクトの4つのタイプについて理解を深めていきます。

「選択の部分」を表す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プロパティを使います。

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行目の処理を実行します。

以下のように選択スライドがつのときに実行をすると…

PowerPointで複数スライドを選択

選択されているスライドが全て複製がされ、イミディエイトウィンドウには「選択スライド数: 2」と出力されます。

PowerPoint VBAで選択スライドを複製する

使用しているプロパティ、メソッドを紹介します。

Countプロパティは、SlideRangeオブジェクトに含まれるスライドの数を表します。

SlideRangeオブジェクト.Count

また、DuplicateメソッドSlideRangeオブジェクトに含まれるスライドを複製します。

SlideRangeオブジェクト.Duplicate

スライドが単一でないと使えないメンバーもある

以下のコードですが、選択スライドが単一であるときは、そのスライドのインデックスがイミディエイトウィンドウに出力されます。

Sub 選択したスライドのインデックス()

With ActiveWindow.Selection
    If .Type >= ppSelectionSlides Then
        Debug.Print "選択しているスライドのインデックス: " & .SlideRange.SlideIndex
    End If
End With

End Sub

SlideIndexプロパティは、スライド範囲のインデックスを取得するプロパティです。

SlideRangeオブジェクト.SlideIndex

ただし、複数のスライドを選択しているときは、以下の実行時エラーが発生します。

SlideRangeが複数のときに発生する実行時エラー

このように、スライドの数が単一でないとエラーになるメンバーもあります。

その場合は、Countプロパティによる判定処理を入れるなど、エラーが起きないようにする必要がありますね。

まとめ

以上、PowerPoint VBAで選択しているスライド範囲を操作するSlideRangeオブジェクトについて解説しました。

選択スライドを一気に操作できるので、なかなか強力です。

ただ、スライドの数に応じて使えるメンバーが限られることがありますので、注意が必要ですね。

次回は、選択スライドのフォントを変更するマクロを紹介していきます。

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

どうぞお楽しみに!

連載目次:初心者向け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をコピーしました