複数の単語を一括置換2021.04.03 更新:2023.12.20
アクティブシート、アクティブブック内の複数の任意の文字列を一括で置換するマクロです。
マクロ実行後に「元に戻す」機能は使用できません。
事前にブックを保存しておくことをお薦めします。
【お薦め】マクロ・プロシージャを管理する無料のツール!
Excelマクロ管理ツール
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