
photo credit: hans-johnson Kitakyushu_1 via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
PowerPoint VBAで選択している部分を操作するマクロの作り方について解説をしています。
前回の記事はコチラです。

選択しているスライド範囲を表すSlideRangeオブジェクトについて紹介しました。
今回は、選択しているスライド範囲について、そのフォントを変更するマクロの作り方を紹介していきましょう。
PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方です。
では、行ってみましょう。
前回のおさらい
前回は以下のようなプロシージャを紹介しました。
1 2 3 4 5 6 7 8 9 10 |
Sub 選択したスライドの取得() With ActiveWindow.Selection If .Type >= ppSelectionSlides Then Debug.Print "選択スライド数: " & .SlideRange.Count .SlideRange.Duplicate End If End With End Sub |
4行目でスライドが選択しているかどうかを判定し、選択されていればそのスライドの数をイミディエイトウィンドウに出力しつつ、複製をするというものです。
今回は、選択しているスライド上のシェイプについて、フォントを変更する方法をお伝えしていきます。
選択スライドの全てのフォントの設定を変更するマクロ
選択スライドの全てのフォントの設定をするマクロですが、流れとしては以下のようになります。
- 選択している全てのスライドについて繰り返し
- 現在のスライドに含まれる全てのシェイプについて繰り返し
- フォントの設定をする
- 現在のスライドに含まれる全てのシェイプについて繰り返し
コードとしては以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub 選択したスライドのフォントを設定() With ActiveWindow.Selection If .Type >= ppSelectionSlides Then Dim i As Long For i = 1 To .SlideRange.Count Dim shp As Shape For Each shp In .SlideRange(i).Shapes With shp.TextFrame.TextRange.Font .Name = "Meiryo UI" .NameFarEast = "Meiryo UI" .Color = RGB(89, 89, 89) End With Next shp Next i End If End With End Sub |
以下解説をしていきましょう。
SlideRangeからインデックスでスライドを取り出す
7行目~16行目のFor文は「選択している全てのスライドについて」繰り返す部分です。
Countプロパティで含まれるスライドの枚数がわかりますので、その分繰り返しをします。
それで、スライド範囲に含まれるスライドには、1からはじまるインデックスが振られていますので、以下のようにして、インデックスを使って個々のスライドをSlideオブジェクトとして取り出すことができます。
スライドに含まれるシェイプについてフォントを設定する
あとは、各Slideオブジェクトの全てのシェイプについて、フォントを設定していけば良いですね。
シェイプコレクションのループとフォントの設定をしている部分が9行目~15行目になります。
詳細は以下の記事をご参考ください。

実行結果
以下のスライドを選択しているときに上記プロシージャを実行します。
すると、以下のように選択しているスライドのみフォントを変更することができました。
別解:SlideRangeオブジェクトについてFor Each文でループを回す(後日注記)
別解として、SlideRangeオブジェクトはFor Each文でループできるよ!というご指摘をいただきました。
確かに以下のコードにより、ループを回すことができることを確認いたしましたので、追記させていただきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub 選択したスライドのフォントを設定2() With ActiveWindow.Selection If .Type >= ppSelectionSlides Then Dim sld As Slide For Each sld In .SlideRange Dim shp As Shape For Each shp In sld.Shapes With shp.TextFrame.TextRange.Font .Name = "Meiryo UI" .NameFarEast = "Meiryo UI" .Color = RGB(89, 89, 89) End With Next shp Next sld End If End With End Sub |
「インストラクターのネタ帳」さま、ご指摘ありがとうございました。
まとめ
以上、PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方を紹介しました。
これで、特定のスライドだけフォントを変更していくというのが一発でできるようになりますね。
ぜひご活用ください。
さて、次回は「選択しているシェイプ」について紹介していきます。

どうぞお楽しみに!
連載目次:初心者向け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でフォームボタンからマクロを実行する方法
投稿者プロフィール
- 株式会社プランノーツ 代表取締役
-
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。
コメント