みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
シリーズで、PowerPoint VBAで選択したオブジェクトについてフォントを変更するマクロの作り方を紹介していきます。
前回の記事はコチラ。
アクティブなウィンドウを取得する方法をお伝えしました。
なぜ、アクティブなウィンドウを取得するのか…それは本シリーズの”主役”と言っても過言ではない「選択している部分」を表すSelectionオブジェクトを取得するためなんですね。
ということで、PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得についてお伝えします。
では、行ってみましょう!
題材となるプレゼンテーションと前回のおさらい
まず、今回以降、題材として使用するプレゼンテーションですが、コチラです。
このプレゼンテーションに対して「選択したオブジェクトについてフォントを変更する」というのを目標に進めていきます。
Sub アクティブなウィンドウ()
Debug.Print ActiveWindow.Caption
End Sub
実行すると、アクティブなウィンドウのタイトルバーのテキスト「Shapeオブジェクト.pptx」がデバッグ出力されるはずです。
選択している部分を表すSelectionオブジェクト
Selectionオブジェクトとは
さて、さっそくSelectionオブジェクトについて見ていきましょう。
PowerPointで「選択されている部分」というとどういう状態を思い浮かべますか?
実は、以下のようにいくつかの種類があることに気が付きます。
- スライドの選択
- シェイプの選択
- テキストの選択
これらの選択状態をとりあえず全部ひっくるめて「選択されている部分」として取り扱うことができる便利なオブジェクトが、Selectionオブジェクトです。
ExcelやWordのSelectionについて
ちなみに、Excelで「Selection」もありますが、これはオブジェクトではなくてプロパティですね。取得できるものは、Rangeオブジェクトになります。
一方でWordには「Selectionオブジェクト」が存在していて、文書内で選択されている範囲またはカーソルが挿入されている箇所を表します。
しかも、ExcelのSelectionプロパティも、WordのSelectionプロパティも、いずれもグローバルのメンバーなので、対象のオブジェクトの記述なしで書くことができます。
PowerPointについては、Selectionプロパティはグローバルのメンバーではないので、その上位オブジェクトであるDocumentWindowオブジェクトの記述が必要なのです。
Selectionプロパティで選択している部分を取得する
PowerPoint VBAでは「選択している部分」を取得するには、DocumentWindowオブジェクトのSelectionプロパティを使います。
例えば以下のようなプロシージャを実行してみましょう。
Sub 選択している部分を取得する()
Debug.Print ActiveWindow.Selection.Parent.Caption
End Sub
実行すると、冒頭のプロシージャと同様に「Shapeオブジェクト.pptx」とイミディエイトウィンドウに出力されています。
SelectionオブジェクトのParentプロパティは、その親オブジェクトを取得するプロパティです。
親オブジェクトはアクティブウィンドウになりますので、そのタイトルバーのテキストが取得されているということになります。
つまり、このコードのSelectionプロパティの使い方は、あまり意味のある使い方ではありませんね。あくまで確認用です。
まとめ
以上、PowerPoint VBAで選択した部分を表すSelectionオブジェクトについて、またその取得の方法についてお伝えしました。
PowerPointでは、選択の状態が複雑なのですが、いったんそれを気にせず、ざっくり「Selectionオブジェクト」として取得することができます。
次回、その「選択の状態が複雑」というところを伝えていきますね。
どうぞお楽しみに!
連載目次:初心者向け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でフォームボタンからマクロを実行する方法