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

選択しているスライド範囲を表すSlideRangeオブジェクトについて紹介しました。
今回は、選択しているスライド範囲について、そのフォントを変更するマクロの作り方を紹介していきましょう。
PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方です。
では、行ってみましょう。
前回のおさらい
前回は以下のようなプロシージャを紹介しました。
Sub 選択したスライドの取得() With ActiveWindow.Selection If .Type >= ppSelectionSlides Then Debug.Print "選択スライド数: " & .SlideRange.Count .SlideRange.Duplicate End If End With End Sub
4行目でスライドが選択しているかどうかを判定し、選択されていればそのスライドの数をイミディエイトウィンドウに出力しつつ、複製をするというものです。
今回は、選択しているスライド上のシェイプについて、フォントを変更する方法をお伝えしていきます。
選択スライドの全てのフォントの設定を変更するマクロ
選択スライドの全てのフォントの設定をするマクロですが、流れとしては以下のようになります。
- 選択している全てのスライドについて繰り返し
- 現在のスライドに含まれる全てのシェイプについて繰り返し
- フォントの設定をする
- 現在のスライドに含まれる全てのシェイプについて繰り返し
コードとしては以下のようになります。
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プロパティで含まれるスライドの枚数がわかりますので、その分繰り返しをします。
SlideRangeオブジェクトにはSlidesコレクションを取得するようなプロパティはありませんので、For Each文ではなくFor文でループを構成します。
それで、スライド範囲に含まれるスライドには、1からはじまるインデックスが振られていますので、以下のようにして、インデックスを使って個々のスライドをSlideオブジェクトとして取り出すことができます。
スライドに含まれるシェイプについてフォントを設定する
あとは、各Slideオブジェクトの全てのシェイプについて、フォントを設定していけば良いですね。
シェイプコレクションのループとフォントの設定をしている部分が9行目~15行目になります。
詳細は以下の記事をご参考ください。

実行結果
以下のスライドを選択しているときに上記プロシージャを実行します。
すると、以下のように選択しているスライドのみフォントを変更することができました。
まとめ
以上、PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方を紹介しました。
これで、特定のスライドだけフォントを変更していくというのが一発でできるようになりますね。
ぜひご活用ください。
さて、次回は「選択しているシェイプ」について紹介していきます。
どうぞお楽しみに!