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

PowerPoint VBA 重ねたフチ文字の線幅を調整するマクロ

PowerPoint VBAを使い、テキストボックスを重ねて作ったフチ文字(袋文字)の背面のテキストの線幅を調整するマクロをご紹介します。

前面のテキストを重ねた状態で線幅が調整できるので、仕上がりを確認しながら調整できます。

スポンサーリンク
スポンサーリンク

フチ文字の線幅を太くするマクロ

コード

Sub フチ文字の線幅を太くする()

    Dim shp As Shape
    Dim col As New Collection
    Dim col_shp As Shape
    
    With ActiveWindow.Selection
        
        'テキスト編集モードの場合はシェイプを選択
        If .Type = ppSelectionText Then .ShapeRange.Select
    
        For Each shp In .ShapeRange
            If shp.Type = msoGroup Then
                'コレクションに要素を追加
                col.Add shp
            Else
                MsgBox "テキストボックスをグループ化してください。"
                Exit Sub
            End If
        Next
    End With

    Do While col.Count > 0
        For Each col_shp In col
            For Each shp In col_shp.GroupItems
                If shp.Type = msoGroup Then
                    'コレクションに要素を追加
                    col.Add shp
                Else
                    '線幅があれば太くする
                    With shp.TextFrame2.TextRange.Font.Line
                        If .Weight >= 0 Then
                            .Weight = .Weight + 1
                        End If
                    End With
                End If
            Next
            'コレクションから要素を削除
            col.Remove 1
        Next
    Loop
End Sub

フチ文字の線幅を細くするマクロ

コード

Sub フチ文字の線幅を細くする()

    Dim shp As Shape
    Dim col As New Collection
    Dim col_shp As Shape
    
    With ActiveWindow.Selection
        
        'テキスト編集モードの場合はシェイプを選択
        If .Type = ppSelectionText Then .ShapeRange.Select
    
        For Each shp In .ShapeRange
            If shp.Type = msoGroup Then
                'コレクションに要素を追加
                col.Add shp
            Else
                MsgBox "テキストボックスをグループ化してください。"
                Exit Sub
            End If
        Next
    End With

    Do While col.Count > 0
        For Each col_shp In col
            For Each shp In col_shp.GroupItems
                If shp.Type = msoGroup Then
                    'コレクションに要素を追加
                    col.Add shp
                Else
                    '線幅があれば細くする
                    With shp.TextFrame2.TextRange.Font.Line
                        If .Weight > 0 Then
                            .Weight = .Weight - 1
                        End If
                    End With
                End If
            Next
            'コレクションから要素を削除
            col.Remove 1
        Next
    Loop
End Sub
スポンサーリンク

実行結果

フチ文字を作る手順で線幅設定なしとありのテキストボックスを用意します。

通常は、この段階でだいたいの線幅を設定してからテキストボックスを重ね合わせますが、テキストボックスを重ねていないので仕上がりがいまいち分かりません。

そこでマクロの登場です。

線幅なしとありのテキストボックスを重ね合わせてグループ化します。

グループ化したテキストボックスを選択した状態でマクロを実行すると、テキストボックスを重ねた状態で背面のテキストの線幅が調整できます。

テキストボックスをずらす必要がないので便利ですね。