PowerPoint VBAでアクティブなウィンドウを取得する方法


active-window

photo credit: www.ilkkajukarainen.fi 6Q3A9093 via photopin (license)

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

PowerPoint VBAの初心者向けシリーズとして、プレゼンテーションすべてのShapeオブジェクトについてフォントを変更する…というシリーズをお伝えしてきました。

ちなみに、そのシリーズの完結的な記事はこちらです。

PowerPoint VBAのFor Each文とFor文によるループとその使い分けについて
PowerPoint VBA初心者向けに、プレゼンテーションの全ての描画オブジェクトのフォントを変更するマクロをお伝えしています。今回はFor Each文とFor文のループの作り方、またその使い分けについてです。

さて、PowerPoint VBAで例えばフォントを変更するマクロを作りたい…といったときには、「すべてのShapeオブジェクトについて」というニーズも当然あると思いますが、こういうニーズもありませんか?

「選択したオブジェクトについてフォントを変更したい」というニーズです。

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

今回はその最初の一歩ということで、PowerPoint VBAでアクティブなウィンドウを取得する方法についてお伝えしていきます。

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

Shapeオブジェクトのフォントを変更する方法

上位オブジェクトからプロパティで掘っていく

以前お送りしたシリーズで、特定のShapeオブジェクトのフォントを変更したい場合、以下のような手順を踏んでいました。

  1. Presentationオブジェクトを取得
  2. Slidesコレクションを取得
  3. Slideオブジェクトを取得
  4. Shapesコレクションを取得
  5. Shapeオブジェクトを取得
  6. Fontオブジェクトを取得して設定

上位にあるオブジェクトから、プロパティを使って掘って掘って…というかたちで、Shapeオブジェクトを取得して、そのFontオブジェクトに設定をしていくという流れでした。

ただ、ちょっと面倒ですし、必ずしもSlideやShapeについて、名前やインデックスで特定できるとは限りません。

選択しているShapeオブジェクトを取得すること

実際にPowerPointを操作しながら、マクロを実行するのであれば、「Shapeオブジェクトを選択している」という状態を作れます。

ですから、その選択しているShapeオブジェクトについてFontオブジェクトを設定する…というのはできそうなものです。

というか、できますね。

ざっくりいうと、上記の手順になります。

  1. DocumentWindowオブジェクトを取得
  2. Selectionオブジェクトを取得
  3. ShapeRangeオブジェクトを取得
  4. Fontオブジェクトを取得して設定

…おや?

こちらのほうがシンプルそうな気がしますね…。

ということで、この手順に沿って、選択しているShapeオブジェクトを掴んで操作をする方法を解説していきますね。

DocumentWindowオブジェクトとは

まず、DocumentWindowオブジェクトというオブジェクトについて知る必要があります。

これは、PowerPointにおいてウィンドウを表すオブジェクトです。

Presentationオブジェクトと何が違うのか…ちょっと混乱するかも知れませんので、整理しておきましょう。

DocumentWindowオブエジェクトはウィンドウを表すオブジェクトであり、DocumentWindowオブジェクトに対して、そこに表示できるPresentationオブジェクトは一つです。

一方で、Presentationオブジェクトはですが、PowerPointのリボンから「表示」→「ウィンドウ」→「新しいウィンドウを開く」とすると、一つのPresentationオブジェクトが複数のDocumentWindowオブジェクトで開いている可能性があるわけです。

また、一つ重要なポイントとして、操作対象(つまり選択した対象)となりうるDocumentWindowオブジェクトは、常に一つということです。

アクティブなウィンドウを取得する

操作対象となっているDocumentWindowオブジェクト、つまりアクティブなウィンドウを取得するには、グローバルなプロパティとして用意されている、ActiveWindowプロパティを使います。

本来はApplicationオブジェクトのメンバーですが、グローバルのメンバーになっていますので、以下のように直接書き出すことができます。

ActiveWindow

例えば、適当なPowerPointプレゼンテーションを作成して、以下のコードを作成、実行してみましょう。

実行すると、イミディエイトウィンドウにウィンドウのタイトルバーに表示されているテキストが出力されるはずです。

Captionプロパティは、ウィンドウのタイトルバーのテキストを取得するプロパティです。

DocumentWindowオブジェクト.Caption

まとめ

以上、PowerPoint VBAで選択した部分を操作する流れとウィンドウを表すDocumentWindowオブジェクトについてお送りしました。

次回、このシリーズの目的を達成するための、たいへん重要な役割を果たすSelectionオブジェクトについて解説をしていきますね。

PowerPoint VBAで選択した部分を表すSelectionオブジェクトとその取得
PowerPoint VBAで選択したオブジェクトについてフォントを変更するマクロの作り方を紹介していきます。今回は選択した部分を表すSelectionオブジェクトとその取得方法についてお伝えします。

どうぞお楽しみに!

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