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

【パワポVBA】テキスト内の改行を一括削除するマクロ

PowerPoint VBAを使い、テキスト内の改行と段落内改行を一括削除するマクロをご紹介します。

「選択中のテキストボックスの改行を削除」「全スライドのテキストボックスの改行を削除」の2つの自動処理ができます。

箇条書きを一行にしたい時などに有効です。

コードは神AI「ChatGPT」で開発しました。ChatGPTについては、次の記事で解説しています。

神AI「ChatGPT」でパワポVBAを開発【始め方から解説】
ChatGPTとは、質問を投げると人工知能が回答してくれるチャットサービスです。Excelでの数式や…
スポンサーリンク
スポンサーリンク

選択中のテキストボックスの改行を一括削除するマクロ

Sub RemoveLineBreaks()

    '選択されたシェイプ内のテキストボックスを取得
    Dim txtBox As shape
    Set txtBox = ActiveWindow.Selection.ShapeRange(1)

    'テキストボックス内のテキストを一旦変数に格納
    Dim strText As String
    strText = txtBox.TextFrame.TextRange.Text

    '改行、段落内改行を全て削除
    strText = Replace(strText, vbCr, "")
    strText = Replace(strText, vbVerticalTab, "")

    '変数に格納されたテキストをテキストボックスに戻す
    txtBox.TextFrame.TextRange.Text = strText
    
End Sub

「Enter」キーで入力した改行コードの定数「vbCr」と「Shift + Enter」キーで入力した段落内改行コードの定数「vbVerticalTab」を「””」の空白で置き換えしています。

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

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

実行結果

改行を一括削除したいテキストボックスを選択します。

マクロを実行すると改行が一括削除されます。一行にならない場合は、テキストボックスの「図形内でテキストを折り返す」のチェックをはずしてください。

「図形内でテキストを折り返す」のチェックのはずし方は、次の記事で解説しています。

PowerPointで図形からはみ出した文字を一瞬で整える方法
PowerPointで図形からはみ出した文字や文字よりも大きく広げすぎたテキストボックスの枠を一瞬で…

全スライドのテキストボックスの改行を一括削除するマクロ

Sub AllRemoveLineBreaks()

    'プレゼンテーション内の全てのスライドを取得
    Dim sl As Slide
    For Each sl In ActivePresentation.Slides
    
        'スライド内の全てのシェイプを取得
        Dim shp As shape
        For Each shp In sl.Shapes
        
            'テキストボックスのみ処理
            If shp.HasTextFrame Then
            
                'テキストボックス内のテキストを一旦変数に格納
                Dim strText As String
                strText = shp.TextFrame.TextRange.Text
            
                '改行、段落内改行を全て削除
                strText = Replace(strText, vbCr, "")
                strText = Replace(strText, vbVerticalTab, "")
            
                '変数に格納されたテキストをテキストボックスに戻す
                shp.TextFrame.TextRange.Text = strText
                
            End If
        Next shp
    Next sl
    
End Sub

「For Next」ステートメントで、スライド1の全てのテキストボックスの改行を削除 → スライド2の全てのテキストボックスの改行を削除…という処理を繰り返し実行しています。ループ処理とも呼ばれます。

実行結果

改行を一括削除したいファイルを用意します。上図はスライド一覧表示をしています。

マクロを実行すると、全てのスライドにあるテキストボックスの改行が一括削除されます。