トップ > 汎用コード > 複数の単語を一括置換

複数の単語を一括置換2021.04.03 更新:2023.12.20

アクティブシートアクティブブック内の複数の任意の文字列を一括で置換するマクロです。



マクロ実行後に「元に戻す」機能は使用できません。
事前にブックを保存しておくことをお薦めします。


【お薦め】マクロ・プロシージャを管理する無料のツール!
 Excelマクロ管理ツール

サンプルコード12021.04.03 更新:2023.12.20

コードの貼り付け場所   VBAコードをカラーで印刷・Web掲載するためのツールはこちら

'------------------------------------------------------------
' アクティブシートの任意の文字列を置換する
'------------------------------------------------------------
Sub sampleReplace1()
    '----------------------------------------
    ' 検索文字列・置換後文字列
    '----------------------------------------
    Dim varArray1dWhat As Variant
    Dim varArray1dRepl As Variant
    
    '要素毎に対【例】富川→富山、神田川→神奈川、チーバ→千葉、君→県
    varArray1dWhat = Array("富川", "神田川", "チーバ", "君")  '検索する文字列
    varArray1dRepl = Array("富山", "神奈川", "千葉", "県")    '置き換える文字列
    
    '----------------------------------------
    ' シートの保護確認
    '----------------------------------------
    If ActiveSheet.ProtectContents Then
        MsgBox "シートが保護されています。シートの保護を解除してください。", vbExclamation
        Exit Sub
    End If
    
    '----------------------------------------
    ' 置換実行
    '----------------------------------------
    Dim i As Long
    For i = 0 To UBound(varArray1dWhat)
        If 0 < Len(varArray1dWhat(i)) Then
            '--------------------------------------------------------------------------
            ' Range.Replaceメソッド
            '--------------------------------------------------------------------------
            '[引数]
            '   What       :検索する文字列
            '   Replacement:置き換える文字列
            '   LookAt     :一致の種類   部分一致:xlPart 全体一致:xlWhole
            '   SearchOrder:検索方法  1行ごと検索:xlByRows 1列ごと検索:xlByColumns
            '   MatchCase  :大文字・小文字の区別  区別する:True 区別しない:False
            '   MatchByte  :全角・半角の区別      区別する:True 区別しない:False
            '---------------------------------------------------------------------------
            Call Cells.Replace(What:=varArray1dWhat(i), _
                               Replacement:=varArray1dRepl(i), _
                               LookAt:=xlPart, _
                               SearchOrder:=xlByRows, _
                               MatchCase:=False, _
                               MatchByte:=False)
        End If
    Next
End Sub

「検索文字列」
 シート内から検索する文字列です。

「置換文字列」
 検索した文字列を置き換える文字列です。

検索文字列と置換文字列は要素が対になっています。
要素が対であれば、要素の増減が可能です。


サンプルコード22021.04.03 更新:2023.12.20

'------------------------------------------------------------
' アクティブブックの全てのシートから任意の文字列を置換する
'------------------------------------------------------------
Sub sampleReplace2()
    '----------------------------------------
    ' 検索文字列・置換後文字列
    '----------------------------------------
    Dim varArray1dWhat As Variant
    Dim varArray1dRepl As Variant
    
    '要素毎に対【例】富川→富山、神田川→神奈川、チーバ→千葉、君→県
    varArray1dWhat = Array("富川", "神田川", "チーバ", "君")  '検索する文字列
    varArray1dRepl = Array("富山", "神奈川", "千葉", "県")    '置き換える文字列
    
    '----------------------------------------
    ' 置換実行 保護されているシートは対象外
    '----------------------------------------
    Dim sht As Worksheet
    Dim i   As Long
    For Each sht In ActiveWorkbook.Worksheets
        If Not sht.ProtectContents Then
            For i = 0 To UBound(varArray1dWhat)
                If 0 < Len(varArray1dWhat(i)) Then
                    '--------------------------------------------------------------------------
                    ' Range.Replaceメソッド
                    '--------------------------------------------------------------------------
                    '[引数]
                    '   What       :検索する文字列
                    '   Replacement:置き換える文字列
                    '   LookAt     :一致の種類   部分一致:xlPart 全体一致:xlWhole
                    '   SearchOrder:検索方法  1行ごと検索:xlByRows 1列ごと検索:xlByColumns
                    '   MatchCase  :大文字・小文字の区別  区別する:True 区別しない:False
                    '   MatchByte  :全角・半角の区別      区別する:True 区別しない:False
                    '---------------------------------------------------------------------------
                    Call sht.Cells.Replace(What:=varArray1dWhat(i), _
                                           Replacement:=varArray1dRepl(i), _
                                           LookAt:=xlPart, _
                                           SearchOrder:=xlByRows, _
                                           MatchCase:=False, _
                                           MatchByte:=False)
                End If
            Next
        End If
    Next
End Sub


ページトップへ戻る

Excel 汎用コード

Copyright(C) 2009- 坂江 保 All Rights Reserved.