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

【パワポVBA】算用数字⇔漢数字に一括変換するマクロ

PowerPoint VBAを使い、全スライドの算用数字を漢数字に一括変換するマクロをご紹介します。

縦書き住所の番地を漢数字にしたいときなどに有効です。

漢数字を算用数字に変換するマクロもご用意しました。

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

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

算用数字を漢数字に一括変換するマクロ

コード

Sub ConvertNumberToKanji()

    '漢数字を定義
    Dim kanjiArray() As String
    kanjiArray = Split("〇,一,二,三,四,五,六,七,八,九", ",")
    
    '全スライドを処理
    Dim sld As Slide
    For Each sld In ActivePresentation.Slides
        'スライド内の全テキストボックスを処理
        Dim shp As shape
        For Each shp In sld.Shapes
            If shp.Type = msoTextBox Then
                'テキストボックス内の文字列を取得
                Dim text As String
                text = shp.TextFrame.TextRange.text
                '文字列内の数字を漢数字に変換して置き換え
                Dim i As Integer
                For i = 0 To 9
                    text = Replace(text, CStr(i), kanjiArray(i))
                Next i
                '変換した文字列をテキストボックスにセット
                shp.TextFrame.TextRange.text = text
            End If
        Next shp
    Next sld
    
End Sub

TextRange.Replaceメソッドで文字列内の算用数字「CStr(i)」を漢数字「kanjiArray(i)」に置き換えしています。

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

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

実行結果

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

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

算用数字を漢数字に一括変換するマクロ

コード

Sub ConvertKanjiToNumber()
Dim sld As Slide Dim shp As shape Dim txtRange As TextRange Dim kanji As Variant Dim i As Long kanji = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九") 'すべてのスライドで繰り返す For Each sld In ActivePresentation.Slides 'すべてのテキストボックスで繰り返す For Each shp In sld.Shapes If shp.HasTextFrame Then Set txtRange = shp.TextFrame.TextRange 'テキストを漢数字から算用数字に変換する For i = LBound(kanji) To UBound(kanji) txtRange.text = Replace(txtRange.text, kanji(i), i) Next i End If Next shp Next sld End Sub

TextRange.Replaceメソッドで文字列内の漢数字「kanji(i)」を算用数字「i」に置き換えしています。

実行結果

テキストボックスに半角の漢数字で「〇〜九」を入力しました。

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