PowerPoint VBAで選択しているスライドのフォントを変更するマクロの作り方

range-font

photo credit: hans-johnson Kitakyushu_1 via photopin (license)

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

PowerPoint VBAで選択している部分を操作するマクロの作り方について解説をしています。

前回の記事はコチラです。

PowerPoint VBAで選択しているスライドを操作するSlideRangeオブジェクト
PowerPoint VBAで選択している部分を操作するマクロの作り方をお伝えしています。今回は、選択しているスライド範囲を操作するSlideRangeオブジェクトとその使い方について紹介していきます。

選択しているスライド範囲を表す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プロパティで含まれるスライドの枚数がわかりますので、その分繰り返しをします。

それで、スライド範囲に含まれるスライドには、1からはじまるインデックスが振られていますので、以下のようにして、インデックスを使って個々のスライドをSlideオブジェクトとして取り出すことができます。

SlideRangeオブジェクト(インデックス)

スライドに含まれるシェイプについてフォントを設定する

あとは、各Slideオブジェクトの全てのシェイプについて、フォントを設定していけば良いですね。

シェイプコレクションのループとフォントの設定をしている部分が9行目~15行目になります。

詳細は以下の記事をご参考ください。

PowerPoint VBAでシェイプのフォント設定をする色々なプロパティまとめ
PowerPoint VBA入門編ということで、図形やテキストボックスのフォントを変更するマクロの作り方をお伝えしています。今回は、テキストのフォントを変更するいろいろなプロパティまとめをお伝えします。

実行結果

以下のスライドを選択しているときに上記プロシージャを実行します。

PowerPointでスライドを選択

すると、以下のように選択しているスライドのみフォントを変更することができました。

PowerPoint VBAで選択しているスライドのフォントを変更

別解:SlideRangeオブジェクトについてFor Each文でループを回す(後日注記)

別解として、SlideRangeオブジェクトはFor Each文でループできるよ!というご指摘をいただきました。

SlideRangeはコレクションでFor Each~Nextでも処理できる:パワーポイントマクロ・PowerPoint VBAの使い方/Slide・スライド
PowerPointの、SlideRangeオブジェクトはコレクションで、For Each~Next文でループ処理することもできます。

確かに以下のコードにより、ループを回すことができることを確認いたしましたので、追記させていただきます。

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で選択しているシェイプを操作するShapeRangeオブジェクト
PowerPoint VBAで選択している部分を操作するマクロの作り方についてお伝えしています。今回は、選択しているシェイプ範囲を操作するShapeRangeオブジェクトとその使い方について紹介をします。

どうぞお楽しみに!

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