PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得

selection

photo credit: Stefan Hoppe Selection via photopin (license)

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

シリーズで、PowerPoint VBAで選択したオブジェクトについてフォントを変更するマクロの作り方を紹介していきます。

前回の記事はコチラ。

PowerPoint VBAでアクティブなウィンドウを取得する方法
PowerPoint VBAで選択したオブジェクトについてフォントを変更するマクロの作り方を紹介していきます。今回は、最初の一歩としてActiveWindowプロパティでアクティブなウィンドウを取得する方法です。

アクティブなウィンドウを取得する方法をお伝えしました。

なぜ、アクティブなウィンドウを取得するのか…それは本シリーズの”主役”と言っても過言ではない「選択している部分」を表すSelectionオブジェクトを取得するためなんですね。

ということで、PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得についてお伝えします。

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

スポンサーリンク

題材となるプレゼンテーションと前回のおさらい

まず、今回以降、題材として使用するプレゼンテーションですが、コチラです。

PowerPoint VBAの題材とするプレゼンテーション

このプレゼンテーションに対して「選択したオブジェクトについてフォントを変更する」というのを目標に進めていきます。

Sub アクティブなウィンドウ()

Debug.Print ActiveWindow.Caption

End Sub

実行すると、アクティブなウィンドウのタイトルバーのテキスト「Shapeオブジェクト.pptx」がデバッグ出力されるはずです。

選択している部分を表すSelectionオブジェクト

Selectionオブジェクトとは

さて、さっそくSelectionオブジェクトについて見ていきましょう。

PowerPointで「選択されている部分」というとどういう状態を思い浮かべますか?

実は、以下のようにいくつかの種類があることに気が付きます。

  • スライドの選択
  • シェイプの選択
  • テキストの選択

これらの選択状態をとりあえず全部ひっくるめて「選択されている部分」として取り扱うことができる便利なオブジェクトが、Selectionオブジェクトです。

ExcelやWordのSelectionについて

ちなみに、Excelで「Selection」もありますが、これはオブジェクトではなくてプロパティですね。取得できるものは、Rangeオブジェクトになります。

一方でWordには「Selectionオブジェクト」が存在していて、文書内で選択されている範囲またはカーソルが挿入されている箇所を表します。

Word VBAでカーソル位置に文字を入力するとっても簡単なプログラム
Word VBA初心者向けシリーズ。今回は、文字を入力する方法の中で最もシンプルな方法を紹介。SelectionオブジェクトのtypeTextメソッドを使って、現在のカーソル位置に文字を入力する方法です。

しかも、ExcelのSelectionプロパティも、WordのSelectionプロパティも、いずれもグローバルのメンバーなので、対象のオブジェクトの記述なしで書くことができます。

PowerPointについては、Selectionプロパティはグローバルのメンバーではないので、その上位オブジェクトであるDocumentWindowオブジェクトの記述が必要なのです。

Selectionプロパティで選択している部分を取得する

PowerPoint VBAでは「選択している部分」を取得するには、DocumentWindowオブジェクトのSelectionプロパティを使います。

DocumentWindowオブエジェクト.Selection

例えば以下のようなプロシージャを実行してみましょう。

Sub 選択している部分を取得する()

Debug.Print ActiveWindow.Selection.Parent.Caption

End Sub

実行すると、冒頭のプロシージャと同様に「Shapeオブジェクト.pptx」とイミディエイトウィンドウに出力されています。

SelectionオブジェクトのParentプロパティは、その親オブジェクトを取得するプロパティです。

Selectionオブジェクト.Parent

親オブジェクトはアクティブウィンドウになりますので、そのタイトルバーのテキストが取得されているということになります。

つまり、このコードのSelectionプロパティの使い方は、あまり意味のある使い方ではありませんね。あくまで確認用です。

まとめ

以上、PowerPoint VBAで選択した部分を表すSelectionオブジェクトについて、またその取得の方法についてお伝えしました。

PowerPointでは、選択の状態が複雑なのですが、いったんそれを気にせず、ざっくり「Selectionオブジェクト」として取得することができます。

次回、その「選択の状態が複雑」というところを伝えていきますね。

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

どうぞお楽しみに!

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