【フォントサイズ変更ツール5】スライド内の変更


仕様

 前回は指定したシェイプ、範囲指定した文字のフォントサイズを変更する関数を作りました(前回の記事)。今回はアクティブスライド内全てのフォントサイズを変更します。
 仕様はコンボボックスのフォントサイズを選択しボタンをクリックすると開いているスライドのフォントサイズが変わります。以下がコードです。

コード

'-------------------スライド内のフォントサイズを変更------------------------------
Sub changeSlideFontSize()
    Dim shp As Shape
    Dim gshp As Shape
    Dim num As Integer
    Dim i As Integer
    Dim val As String: val = UserForm1.cmB_fntSz.Value
    Dim row As Integer    '表行数用変数
    Dim col As Integer    '表桁数用変数
    
    num = ActiveWindow.Selection.SlideRange.SlideIndex  '現在開いているスライド番号を取得
    
    For Each shp In Application.ActivePresentation.Slides(num).Shapes
        Select Case shp.Type
        Case msoAutoShape, msoCallout, msoPlaceholder, msoTextBox
            If shp.HasTextFrame = True Then
                With shp.TextFrame.TextRange.Font
                    .Size = val
                End With
            End If
        Case msoGroup    'グループの時
            For Each gshp In shp.GroupItems
                If gshp.HasTextFrame Then
                    With gshp.TextFrame.TextRange.Font
                        .Size = val
                    End With
                End If
            Next
        Case msoTable    '表の時
            With shp.Table
                For row = 1 To .Rows.Count
                    For col = 1 To .Columns.Count
                        With .Cell(row, col).Shape.TextFrame.TextRange.Font
                            .Size = val
                        End With
                    Next col
                Next row
            End With
        End Select
    Next
End Sub

 コードの解説をします。まずアクティブスライドのインデックスを取得します。その後そのアクティブスライド内の全てのシェイプを1つずつ読みこむループを作ります。次にシェイプの種類による条件分岐をSelect Caseで行います。
 1つ目の条件で文字が入力できる一般的なシェイプのフォントサイズを変更します。
 2つ目はグループ化されたシェイプに対してフォントサイズ変更を行います。ポイントはグループの中のシェイプを1つずつ見ていくループを作り、文字が入力できるTextFrameを持っているかどうかの条件をつけることです。文字入力ができない場合は無視されます。
 最後の条件は表に対してフォントサイズを変更します。ポイントは行と列を1つずつ見ていく2次元ループを作ることです。エクセルVBAでよく使うループです。
 以上がアクティブスライド内のフォントサイズを変更する関数です。続いて以下コードでユーザーフォームのボタンをクリックするとフォントサイズが変更されるようにします。

'省略

'----------ボタンのクリックイベント----------
Private Sub cB_fntSz_Click()
    Call Module1.changeSlideFontSize
End Sub

 ボタンのクリックイベント関数内で先程作成した関数を呼び出します。
 最後に動作確認します。シェイプ、画像、グループ、表をスライド内に並べてフォントサイズを16から30に変更しました。下の画像の様に画像以外はフォントサイズが大きくなりうまく動きました。

 次回はプレゼンテーション内全てのフォントサイズを一括で変更します。


コメントを残す