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

【パワポVBA】半角数字⇔全角数字に一括変換するマクロ

PowerPoint VBAを使い、全スライドの半角数字を全角数字に一括変換するマクロをご紹介します。逆にも対応しています。

半角英数字を全角英数字に変換するマクロもご用意しました。

漢字やひらがなと字送りを合わせたいときに有効です。

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

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

半角数字を全角数字に一括変換するマクロ

コード

Sub ConvertHalfWidthNumbersToFullWidthNumbers()

    Dim sld As Slide
    Dim shp As shape
    Dim str As String
    Dim i As Integer
    
    '各スライドに対して実行
    For Each sld In ActivePresentation.Slides
    
        '各シェイプに対して実行
        For Each shp In sld.Shapes
        
            'テキストボックス、テキストフレーム、タイトルのみ対象
            If shp.HasTextFrame And (shp.TextFrame.HasText) And (shp.Type = msoTextBox Or shp.Type = msoPlaceholder) Then
            
                '文字列を取得
                str = shp.TextFrame.TextRange.Text
                
                '文字列内の半角数字を全角数字に変換
                For i = 0 To 9
                    str = Replace(str, CStr(i), ChrW(&HFF10 + i))
                Next i
                
                '変換後の文字列をセット
                shp.TextFrame.TextRange.Text = str
                
            End If
        Next shp
    Next sld
End Sub

TextRange.Replaceメソッドで文字列内の半角数字「CStr(i)」を全角数字「ChrW(&HFF10 + i)」に置き換えしています。

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

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

実行結果

テキストボックスに半角数字で「0〜9」を入力しました。

マクロを実行すると全角数字に一括で変換されます。全てのスライドに対して処理されます。

全角数字を半角数字に一括変換するマクロ

Sub ConvertFullWidthNumbersToHalfWidthNumbers()

    Dim sld As Slide
    Dim shp As shape
    Dim str As String
    Dim i As Integer
    
    '各スライドに対して実行
    For Each sld In ActivePresentation.Slides
    
        '各シェイプに対して実行
        For Each shp In sld.Shapes
        
            'テキストボックス、テキストフレーム、タイトルのみ対象
            If shp.HasTextFrame And (shp.TextFrame.HasText) And (shp.Type = msoTextBox Or shp.Type = msoPlaceholder) Then
            
                '文字列を取得
                str = shp.TextFrame.TextRange.Text
                
                '文字列内の全角数字を半角数字に変換
                For i = 0 To 9
                    str = Replace(str, ChrW(&HFF10 + i), CStr(i))
                Next i
                
                '変換後の文字列をセット
                shp.TextFrame.TextRange.Text = str
                
            End If
        Next shp
    Next sld
End Sub

TextRange.Replaceメソッドで文字列内の全角数字「ChrW(&HFF10 + i)」を半角数字「CStr(i)」に置き換えしています。

半角英数字を全角英数字に一括変換するマクロ

コード

Sub ConvertHalfWidthAlphanumericCharactersToFullWidthAlphanumericCharacters()

    Dim sld As Slide
    Dim shp As shape
    Dim str As String
    
    '各スライドに対して実行
    For Each sld In ActivePresentation.Slides
    
        '各シェイプに対して実行
        For Each shp In sld.Shapes
        
            'テキストボックス、テキストフレーム、タイトルのみ対象
            If shp.HasTextFrame And (shp.TextFrame.HasText) And (shp.Type = msoTextBox Or shp.Type = msoPlaceholder) Then
            
                '文字列を取得
                str = shp.TextFrame.TextRange.Text
                
                '文字列内の半角英数字を全角英数字に変換
                str = StrConv(str, vbWide)
                
                '変換後の文字列をセット
                shp.TextFrame.TextRange.Text = str
End If Next shp Next sld End Sub

StrConv関数を使うと、文字列内を指定したとおりに変換できます。引数に「vbWide」を指定することで、文字列内の狭い(1バイト)文字をワイド(2バイト)文字に変換しています。

実行結果

テキストボックスに半角の英語と数字を入力しました。

マクロを実行すると全角英数字に一括で変換されます。全てのスライドに対して処理されます。

全角英数字を半角英数字に一括変換するマクロ

Sub ConvertFullWidthAlphanumericCharactersToHalfWidthAlphanumericCharacters()

    Dim sld As Slide
    Dim shp As shape
    Dim str As String
    
    '各スライドに対して実行
    For Each sld In ActivePresentation.Slides
    
        '各シェイプに対して実行
        For Each shp In sld.Shapes
        
            'テキストボックス、テキストフレーム、タイトルのみ対象
            If shp.HasTextFrame And (shp.TextFrame.HasText) And (shp.Type = msoTextBox Or shp.Type = msoPlaceholder) Then
            
                '文字列を取得
                str = shp.TextFrame.TextRange.Text
                
                '文字列内の全角英数字を半角英数字に変換
                str = StrConv(str, vbNarrow)
                
                '変換後の文字列をセット
                shp.TextFrame.TextRange.Text = str
End If Next shp Next sld End Sub

StrConv関数を使うと、文字列内を指定したとおりに変換できます。引数に「vbNarrow」を指定することで、文字列内のワイド(2バイト)文字を狭い(1バイト)文字に変換しています。