みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
PowerPoint VBAの初心者向けシリーズとして、プレゼンテーションすべてのShapeオブジェクトについてフォントを変更する…というシリーズをお伝えしてきました。
ちなみに、そのシリーズの完結的な記事はこちらです。
さて、PowerPoint VBAで例えばフォントを変更するマクロを作りたい…といったときには、「すべてのShapeオブジェクトについて」というニーズも当然あると思いますが、こういうニーズもありませんか?
「選択したオブジェクトについてフォントを変更したい」というニーズです。
これを解決するために、今回から何回かのシリーズで、PowerPoint VBAで選択したオブジェクトについてフォントを変更するマクロの作り方を紹介していきます。
今回はその最初の一歩ということで、PowerPoint VBAでアクティブなウィンドウを取得する方法についてお伝えしていきます。
では、行ってみましょう!
Shapeオブジェクトのフォントを変更する方法
上位オブジェクトからプロパティで掘っていく
以前お送りしたシリーズで、特定のShapeオブジェクトのフォントを変更したい場合、以下のような手順を踏んでいました。
- Presentationオブジェクトを取得
- Slidesコレクションを取得
- Slideオブジェクトを取得
- Shapesコレクションを取得
- Shapeオブジェクトを取得
- Fontオブジェクトを取得して設定
上位にあるオブジェクトから、プロパティを使って掘って掘って…というかたちで、Shapeオブジェクトを取得して、そのFontオブジェクトに設定をしていくという流れでした。
ただ、ちょっと面倒ですし、必ずしもSlideやShapeについて、名前やインデックスで特定できるとは限りません。
選択しているShapeオブジェクトを取得すること
実際にPowerPointを操作しながら、マクロを実行するのであれば、「Shapeオブジェクトを選択している」という状態を作れます。
ですから、その選択しているShapeオブジェクトについてFontオブジェクトを設定する…というのはできそうなものです。
というか、できますね。
ざっくりいうと、上記の手順になります。
- DocumentWindowオブジェクトを取得
- Selectionオブジェクトを取得
- ShapeRangeオブジェクトを取得
- Fontオブジェクトを取得して設定
…おや?
こちらのほうがシンプルそうな気がしますね…。
ということで、この手順に沿って、選択しているShapeオブジェクトを掴んで操作をする方法を解説していきますね。
DocumentWindowオブジェクトとは
まず、DocumentWindowオブジェクトというオブジェクトについて知る必要があります。
これは、PowerPointにおいてウィンドウを表すオブジェクトです。
Presentationオブジェクトと何が違うのか…ちょっと混乱するかも知れませんので、整理しておきましょう。
DocumentWindowオブエジェクトはウィンドウを表すオブジェクトであり、DocumentWindowオブジェクトに対して、そこに表示できるPresentationオブジェクトは一つです。
一方で、Presentationオブジェクトはですが、PowerPointのリボンから「表示」→「ウィンドウ」→「新しいウィンドウを開く」とすると、一つのPresentationオブジェクトが複数のDocumentWindowオブジェクトで開いている可能性があるわけです。
また、一つ重要なポイントとして、操作対象(つまり選択した対象)となりうるDocumentWindowオブジェクトは、常に一つということです。
アクティブなウィンドウを取得する
操作対象となっているDocumentWindowオブジェクト、つまりアクティブなウィンドウを取得するには、グローバルなプロパティとして用意されている、ActiveWindowプロパティを使います。
本来はApplicationオブジェクトのメンバーですが、グローバルのメンバーになっていますので、以下のように直接書き出すことができます。
例えば、適当なPowerPointプレゼンテーションを作成して、以下のコードを作成、実行してみましょう。
Sub アクティブなウィンドウ()
Debug.Print ActiveWindow.Caption
End Sub
実行すると、イミディエイトウィンドウにウィンドウのタイトルバーに表示されているテキストが出力されるはずです。
Captionプロパティは、ウィンドウのタイトルバーのテキストを取得するプロパティです。
まとめ
以上、PowerPoint VBAで選択した部分を操作する流れとウィンドウを表すDocumentWindowオブジェクトについてお送りしました。
次回、このシリーズの目的を達成するための、たいへん重要な役割を果たす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でフォームボタンからマクロを実行する方法