おすすめパワポ本12選!プロから学ぶ資料作成術

【パワポVBA】指定のフォントサイズのpt数を一括で変更するマクロ

PowerPointで指定のフォントサイズのpt数を一括で変更したいときありませんか?

手動で行うとサイズ変更の作業を繰り返す必要がありますが、PowerPoint VBAを使うとすべてのスライドに対して一括で処理することが可能です。

マクロの使い方は、次の記事で解説しています。

PowerPointマクロ入門 | コピペで始める楽々コース

PowerPointマクロ入門 | コピペで始める楽々コース
PowerPointでマクロを始めたいけど、難しそうでよく分からないという方向けの入門編です。PPD…
スポンサーリンク
スポンサーリンク

指定のフォントサイズのpt数を一括で変更するマクロ

プレゼンテーション内のすべてのスライドのテキストボックス内の文字を一文字ずつ調べ、20ptの文字を12ptに変更します。pt数は適宜変更が必要です。

Sub ChangeFontSize()

    'プレゼンテーション内のすべてのスライドをループする
    Dim sld As Slide
    For Each sld In ActivePresentation.Slides
    
        'スライドのすべてのシェイプをループする
        Dim shp As Shape
        For Each shp In sld.Shapes
        
            'シェイプがテキストボックスの場合
            If shp.HasTextFrame Then
            
                'テキストボックス内のすべての文字をループする
                Dim rng As TextRange
                For Each rng In shp.TextFrame.TextRange.Runs
                
                    'フォントサイズが20ptの場合
                    If rng.Font.Size = 20 Then
                    
                        'フォントサイズを12ptに変更する
                        rng.Font.Size = 12
                    End If
                    
                Next rng
            End If
        Next shp
    Next sld
End Sub

それぞれのコードの説明は以下の通りです。

  • Dim sld As Slide:スライドオブジェクトを参照するための変数「sld」を宣言しています。
  • For Each sld In ActivePresentation.Slides:アクティブなプレゼンテーションのすべてのスライドを順に調べるループを開始します。
  • Dim shp As Shape:シェイプオブジェクトを参照するための変数「shp」を宣言しています。
  • For Each shp In sld.Shapes:スライドのすべてのシェイプを順に調べるループを開始します。
  • If shp.HasTextFrame Then:シェイプがテキストボックスかどうかをチェックします。
  • Dim rng As TextRange:テキストボックス内のすべての文字を参照するための変数「rng」を宣言しています。
  • For Each rng In shp.TextFrame.TextRange.Runs:テキストボックス内のすべての文字を順に調べるループを開始します。
  • If rng.Font.Size = 20 Then:文字のフォントサイズが20ptかどうかをチェックします。
  • rng.Font.Size = 12:文字のフォントサイズを12ptに変更します。

実行結果

上記のようなテキストボックスに入力されたキャプションのフォントサイズを一括で変更したい場合、手動で行うと1キャプションずつ選択して変更する必要があります。

前項のマクロを実行すると指定のpt数に一括で変更できるので、手動でループ作業を行う必要がなく効率的です。