VBA・マクロツール

別ファイル内の複数文字列を一括で置換するツール(Microsoft Excel)

 

本記事では、最も有名でかつ使用頻度が高い表計算ソフトの「Microoft Excel」で使用できる『複数文字列を一括で置換するマクロ』ツールの概要・使い方・取得方法等を紹介しております。

 

「複数文字列を一括で置換するツール」の概要

本ツールは、Excel内にあります表内に『検索する文字列』と『置換する文字列』を入力して、指定した全ファイル(Excel,Word,Powerpoint,CSV)を対象に『検索する文字列』で指定した文字を『置換する文字列』に変換するツールとなっております。

 

本ツールでできること

  • Microsoftソフトウェア(Excel.Word,PowerPoint,CSV)のどのファイルでも置換ができます。
  • ファイル内にある複数の文字列を対象に一度で全て置換できます。
  • 検索条件を指定(完全一致、大文字/小文字、全角/半角)して置換ができます。

通常は対象のファイルを一つずつ開いてExcelの標準機能の「検索」→「置換」にて実施しなければいけない作業を、本ツールを使用すると一度に複数文字を置換することができます

 

様々な種類のファイルを対象にして、複数の文字を「検索」→「置換」しなければいけない場合等でご活用いただけます。

 

本ツールの利用手順

本ツールを使用する手順は以下の通りになります。

Step1:本ツール(Excelマクロファイル)を開く

  1. 一括置換ツールのVBAコードを含んだExcelファイル(***.xlsm)を作成して、そのExcelファイルを開きます。

Step2:検索/置換する対象の文字を入力する

  1. 表内に「検索する文字列」とそれぞれに対応した「置換する文字列」を入力します。

    Step3:対象のファイルを選択する

    1. 「一括置換を実行」ボタンをクリックします。
    2. 置換する対象の府ファイルを選択します。(※複数選択可能)
    3. 「開く」をクリックします。

      Excelファイル以外を置換する場合は、右下のファイル種類で対象の拡張子を選択することでWord,PowerPoint,CSVファイル等を表示させ、選択できます。

        指定した全ての文字列が置換する文字列に置換されています。

       

      Option1:ワイルドカードを使用可能

      ワイルドカード(*,?)等を使用した前方一致、中間一致、後方一致などは利用可能ですが、正規表現である([ ],^,$,|,+)等は使用できません。

      ワイルドカードは指定したとおりに置換されていますが、正規表現を使用した場合は、正規表現文字はそのままの文字として完全に一致する文字に対して置換がされます。

       

      Option2:置換対象のシートを指定可能

      対象をのファイル内のシートを指定する場合は、シート名を記載します。 ※指定がない場合は、空欄にすると全てのシートを対象にします。

       

      Option3:検索する条件を指定可能

      それぞれの検索条件に対して、「完全一致のみを対象とする」、「大文字と小文字を区別する」、「半角と全角を区別する」を指定することができます。

        また、実行した結果として、指定した文字列の置換が全て正常に作成されたかファイル内に指定した文字列に存在しないものがあったか、どちらかのメッセージが表示されますので確認してください。

      ご利用に関するQ&A

      本ツールはどのように取得できますか?

      当記事内の「本ツールのダウンロードはこちら」よりマクロ付きExcelファイルがダウンロードができます。

      ※有料コンテンツの場合は、ご購入後にツールのダウンロード、VBAソースコードの確認ができます。

      ツールの使い方等のサポートを受けることができますか?

      当サイトでは早期対応の使い方サポートサービスを提供しておりますので、使用方法等が分からない場合でも安心してご利用いただけます。

      簡易的な内容ですと、当記事のコメント欄よりお問い合わせください。またはサイト最上部にあります「お問い合わせフォーム」より不明点をお問い合わせください。

      ※早期対応は有料コンテンツをご利用いただいた方限定のサービスとなっております。

      マクロの実行がブロックされてツールが使用できない場合はどうしたらいいですか?

      本ツールは利用時に各環境の設定により、マクロの実行がブロックされる可能性があります。

      マクロ実行の許可は(別記事:マクロのブロックを解除する方法)を参考に進めて下さい。

      なお、上記を実施しても解除できない場合はマクロを含まないExcelファイルと必要なVBAソースコードを別途ご案内いたします。

      返金をお願いしたい場合はどうしたらいいですか?

      ご購入後の24時間以内なら返金可能です。

      その際は、サイト最上部にあります「お問い合わせフォーム」よりご連絡ください。

      ※有料コンテンツのみ

       

      ご利用上の注意事項

      本ツールはMicrosoft Excelのマクロ機能を用いて、プログラミング言語「VBA」にて作成しております。ご利用に関しては、以下の注意事項をご確認ください。

       

      • 本ツールの開発環境は、OS:Windows10 、Excelのバージョン:Microsoft 2016、Microsoft Office 365となっており、当該環境では動作確認ができていますが、他の環境での動作は完全には確認できていません。
      • 本ツールは利用時に各環境の設定により、マクロの実行をブロックする可能性があります。マクロ実行の許可は(別記事:マクロのブロックを解除する方法)を参考に進めて下さい。
      • 本ツールの利用で発生した問題の責任は負いかねます。事前に使い方をテスト、理解した上で、ご利用ください。
      • 本ツールはバージョンアップに伴い、ツール自体の仕様が変更になる可能性やアップデートされる可能性がございます。予めご了承ください。
      • ツールおよびプログラムの著作は当サイトを管理しております「デジたわ」にあります。無断での転載・再販・配布・共有は固く禁止しております。

       

      時短ツールの特徴と紹介

      『時短ツールラボ』では本ツール以外にもExcelマクロを利用した時短ツールを複数ご用意しております。

      今後も随時新規で開発、公開していきますので是非ご覧ください。

      全ツールはこちら(時短ツールラボ)からご確認ください。

       

      時短ツールラボのツールの特徴

       

       

      商品は全て買い切り

       

      販売されるExcelマクロのツールは全て月額料金が発生しない「買い切り型」となっています。ランニングコストの心配をせずにツールを使用いただけます。

       

      無料ツールもご用意

       

      初めての方でも安心してご利用いただけるように「無料」で使用できるツールも多数用意しております。ツールの使用感を確かめたうえでご購入いただけます。

       

      使い方のサポートが無料

       

      有料ツールをご利用いただいた方限定で早期対応の使い方サポートサービスをご用意しております。初めてExcelマクロツールをご利用される方も安心ください。

       

      返金制度あり

       

      ご購入いただいてから24時間以内にご返金の申請をした場合は、全額返金させていただく返金制度もご用意しておりますので、ご安心ください。

       

      ソースコードを閲覧可能

       

      ツールをご利用いただいた方限定でVBAソースコードをご確認いただけます。ご自身でマクロ開発、VBAプログラミング学習をされる際にご活用ください。

       

      ⑥ 自由にカスタマイズ可能

       

      マクロを含んだExcelファイルとVBAソースコードはご自身で使いやすいようカスタマイズ可能です。(※Excelファイル、VBAソースコード等の商用利用は不可となります。)

      本ツールのダウンロードはこちら

      本ツールのダウンロード、VBAソースコードの確認等をする場合は、下記より500円でご購入ください。

      【Excel VBA】複数文字列の一括置換ツール

      ※ダウンロードした本ツールを開くことができない場合は、マクロのブロックを解除する方法より
      本ツールを開くことができるよう設定を変更してください。

      正常に動作しない場合は、当記事のコメント欄または「お問い合わせフォーム」よりご連絡ください。

       

       

       <本ツールが業務効率化や時短につながりましたら、下のグッドボタンを押していただけたら幸いです>

      コメントはこちら

      1. GO より:

        1000以上の csv ファイルで、どうしても置換作業が必要になり、目の前が真っ暗になりかけていました。
        まさにこういう一括置換マクロが欲しかったのです。

        ご提供、ありがとうございます。マクロは csv ファイルでも問題なく作業してくれました。

        なお、「Excelマクロ有効ブック」は好きな名前を付けて保存してしまいました。
        マクロのタイトルとは別物でしたよね?

      2. RH より:

        管理人のRHです。遅くなり申し訳ありません。
        お役に立ちまして、良かったです。

        >なお、「Excelマクロ有効ブック」は好きな名前を付けて保存してしまいました。
        >マクロのタイトルとは別物でしたよね?

        上記は、マクロのファイル名のことかと思いますので、好きな名前を付けて頂いて問題ありません。

      3. 山本 より:

        もしよければ教えて下さい。商品コードで1123456と123456のコードがあり、123456のコードを
        123678に変更したいとき、1123456のコードが1123678になります、下6桁が同じです。7桁と6桁の違いを判別する事は可能ですか。

        • RH より:

          管理人のRHです。遅くなり申し訳ありません。

          山本様が実現させたい6桁と7桁を判別するようにツールを変更しました。
          更新版のエクセルファイルを見ていただくと、C列に『完全一致のみを対象とする』ことを設定できるようにしました。ここに値を入れると完全一致のみを検索の対象にしますので、6桁と7桁を判別できるようになったかと思います。

          ご使用いただき、問題等がありましたらまたお知らせください。

      4. MM より:

        こういうのが欲しかった!
        とても重宝させていただいていたのですが、突如使えなくなってしまいました。
        ファイルを選択すると強制終了するようになってしまいました・・・。どうしてでしょうか・・・。

        • RH より:

          管理人のRHです。
          MMさん、ツールのご使用とコメントありがとうございます。

          急に強制終了されて使えなくなったとのことですが、「予期せぬエラーが発生しました。」というエラーメッセージも表示されない状況とお見受けします。

          根本的な解決策にはならないかもしれませんが、いったんPCを再起動して再度ツールを実行してみたら解消されますでしょうか?

          それで解消されない場合は、可能でしたら、OSのバージョンとMicrosoft Officeのバージョンを教えていただければと思います。

      5. sank より:

        便利なツールありがとうございます。
        ちなみに
        A行のある文字を置き換える文字と
        B行の同じ文字を置き換える文字がA行で置き換えた文字とは違う文字に置き換えたい場合
        行ごとに指定することはできるのでしょうか?

        • RH より:

          管理人のRHです。
          sankさん、ツールのご使用とコメントありがとうございます。

          申し訳ありません。
          当ツールの現状の機能としては、行数を指定して置換することはできません。

          sankさんがおっしゃった行数をそれぞれ指定して置換することができるツールは今後作成して公開しようと思いますので、その際はよろしければお使いください。

          • 匿名 より:

            わかりました!
            ありがとうございました。

            • RH より:

              管理人のRHです。

              sankさんへ、行や列、範囲を限定させて一括置換するツールを作成しましたので下記サイトをご確認ください。

              https://resthill.blog/excel-vba-tool14/

              必要に応じて、一括置換の検索/置換する範囲を限定できるようなツールとなっています。
              不明点等ありましたら、改めてコメントをください。

      6. KOM より:

        初めまして。ツール活用させて頂いています。
        1度に複数ファイルで対応できるようにならないかと思っています。
        ソースコードの56行目を以下のように変更することで、
        選択はできますが、エラーになってしまいます。

        filePath = Application.GetOpenFilename(Filefilter:=”Microsoft Excelブック,*.xls?,csvファイル,*.csv”, Title:=Msg1,MultiSelect:=True)

        ご対応方法について教えて頂けますでしょうか?

        • RH より:

          管理人のRHです。
          KOMさん、ツールのご使用とコメントありがとうございます。

          一度に複数ファイルを選択して一括置換するよう変更する場合は、修正する部分のコードが複数に及びましたので、本日複数ファイルを選択できる仕様として修正版をアップロードしましたので、ご使用していただけたら幸いです。

          不具合等がありましたら改めてコメント等をお願いします。

          • KOM より:

            RHさん

            対応頂きありがとうございます。
            早速使用させて頂いたのですが、ファイル選択時にフォルダ単位でしか選択できなくなり、フォルダを選択しても以下の内容が出てくる形となってしまいます。

            赤色で表示された箇所は、下記により正しくファイルを振り分けることができませんでした。

            フォルダ名:指定されたフォルダ名は存在していません。
            ファイル名:ダイアログで選択したフォルダ内にファイルが存在しないか、振り分け先に同一名所のファイルが存在しています。

            • RH より:

              管理人のRHです。
              KOMさん、ツールのご使用とコメントありがとうございます。

              もしかしたらですが、「ファイル自動振り分けツール」のVBAコードを誤ってコピペしてないでしょうか?

              このページのVBAコード(以下のURL)をコピーしていただければ動作する可能性がありますので、一度お試しください。
              (https://resthill.blog/excel-vba-tool4/#VBA)

              • KOM より:

                RHさん

                ご確認ありがとうございます。
                ご指摘の通り、別のVBAコードを誤ってコピペしていたようです。

                最初に作成したファイルのVBAコードと入れ替えてもうまく動きませんでしたが、エクセルからDLしなおしたところ、正常に作動するようになりました。ありがとうございます!

      7. YOH より:

        お世話になります。大変便利なツールでぜひ利用させていただきたいと思っております。
        一点質問なのですが、空白セルを特定文字に変換したいのですがどのようにすればよいでしょうか。
        いろいろ試してみたのですが、どうしてもできずご相談させていただきました。
        大変お手数をおかけ致しますが、ご返信いただければ幸いです。よろしくお願い致します。

        • RH より:

          管理人のRHです。
          YOHさん、ツールのご使用とコメントありがとうございます。

          空白セルを特定文字に変換したいということですが、例えばA12セルに「 」(半角空白)を入力し、B12セルに「@」(特定文字)を入力します。

          ※必要に応じて半角/全角や大文字/小文字などを指定する場合はC12,D12,E12に「〇」を入力します。

          その状態で「一括置換実行」をクリックすればYOHさんが思っていることが実現できないでしょうか。

          もし実現できない場合は、もう少し詳細な情報を頂ければ幸いです。

      8. YOH より:

        早速のご返答ありがとうございます。
        せっかくお答えいただきましたが、説明不足で大変申し訳ございませんでした。
        空白セル=なにも入っていない状態のセルということでした。
        文字列を変換するマクロなので、変換するためには半角空白などなにか入力する必要がありますでしょうか。
        何度も申し訳ございませんが、よろしくお願いします。

        • RH より:

          管理人のRHです。
          YOHさん、コメントありがとうございます。

          申し訳ありません、勘違いしていました。空白セル(空文字列)のことですね。

          現状のマクロツールの動作は、空白セル(値0の文字列)を「検索する文字列」に入力した状態で実行させると、空白セルが存在する範囲内(空白セルも含めた文字列が入っている行と列内)で、空白セルと何も入っていないセルが全て「置換後の文字列」に置き換えられてしまいます。

          おそらくYOHさんが実現したい挙動と違うと思いますので、空白セルのみを対象にするよう改修し、完了しましたら改めてこちらにコメントいたします。

      9. YOH より:

        何度も返信いただき、ありがとうございました。
        また大変丁寧にご説明いただき、感謝致します。
        私もまだまだ勉強不足なので、これからも勉強させて頂きます。
        RH様の作成されたツールは利便性もさることながら、デザインも美しいなあと思っております。
        これからも何卒よろしくお願い致します。

        • RH より:

          管理人のRHです。
          YOHさん、コメントありがとうございます。

          色々とお褒めの言葉を頂きまして感謝いたします。

          しかし、YOHさんが実現したかった空白セル(空文字列)を特定文字に置換する処理についてですが、空文字列を見つけることのできる関数がVBAでは存在しないようです。様々な方法を考えてみたのですが、結果としてはVBAでは実装できませんでした。
          お力になれず、大変申し訳ありません。

      10. ゆうき より:

        コードに不備があるようなので、報告させて頂きます
        allMatchFlg
        caseSensitiveFlg
        byteFlg

        上記フラグについてですが、一度TrueになるFalseにならないように思います。

        • RH より:

          管理人のRHです。
          ゆうきさん、コメントありがとうございます。

          おっしゃっていただいた通り不具合でしたので、修正したバージョンをアップロードいたします。

          ご指摘いただき、感謝いたします。

      11. けろ より:

        こういうマクロを捜していたのでとてもありがたいです。
        データの文字化けがひどく、変換文字を500行くらい指定できるようにしたいのですがどのようにしたらよいでしょうか?

      12. RH より:

        管理人のRHです。
        けろさん、ツールのご使用とコメントありがとうございます。

        500行程度の置換処理は可能だとは思うのですが、文字化けした文字に対して置換処理を行いたいという認識で合ってますでしょうか。

        その場合は、当ツールを使用する前に文字コードを変換してから使用することは可能でしょうか。(文字化けを全て置換するのは効率が悪い可能性があります。)
        例)リボン内の「データ」→「データの取得」→必要なデータ形式を選択→インポート→文字化けしていない文字コードを選択する→読み込み

        説明がうまくなく申し訳ないのですが、分かりにくい場合は、改めてコメントをお願いします。

      13. ぱいそん より:

        大変便利なマクロを作成いただきありがとうございます。
        対象の文字を含む文字列を、指定の文字列へ置換することは可能でしょうか?
        例えば
        ‘サンタクロース’→’サンタ’
        ‘サンタさん’→’サンタ’
        よろしくお願いいたします。

        • RH より:

          管理人のRHです。
          ぱいそんさん、ツールの使用とコメントありがとうございます。

          はい、その場合は「サンタクロース」と「サンタさん」を検索する文字列(B11,B12)に入力し、「サンタ」を置換する文字列(C11,C12)に入力した状態で、
          「完全一致のみを対象とする」(D11,D12)で「〇」を選択し、一括置換を実行していただければ可能だと思います。

          もし思ったように動作しない等がありましたら改めてコメント等いただければと思います。

      14. CS より:

        数値は置換したのですが、漢字氏名が検索対象として認識されず「見つかりません」というエラー表示されるのですが、何か考えられる原因はありますでしょうか?

        • RH より:

          管理人のRHです。
          CSさん、ツールの使用とコメントありがとうございます。

          漢字氏名は文字列としてExcelファイルに保存されているかと思いますので、通常なら問題なく置換できるはずです。

          対象の文字列があるのに見つからないと考えられる原因としては、基本的なことばかりで既に確認済みかもしれませんが以下になります。
          ❶「条件の適用」の3つにどれかに「〇」が付いていて対象から外れている。
          ❷「対象シート」に値が入っていて、漢字氏名が入力されているシートがその対象から外れている。

          これらをご確認いただいて問題ないようでしたら、可能でしたら、「https://resthill.blog/excel-vba-tool14/」のツールが類似したものになるので、こちらで一度お試しいただいても良いでしょうか。

          • 匿名 より:

            ご紹介いただいたツールで、複数のファイルに分かれていたシートを一つのファイルにまとめ、ファイル内で一括置換できました。たいへん助かりました。ありがとうございます。

            • RH より:

              管理人のRHです。
              匿名さん、ツールの使用とコメントありがとうございます。

              紹介させていただいたツールがお役にたったようでなによりです。
              また機会がありましたら他のツールも是非ご使用いただければ幸いです。

      15. 匿名 より:

        ご紹介いただいた本ツールで複数wordに対して同じ処理(ツール内で指定した文字に置換)をするにはどのようにしたらよいでしょうか。

        • RH より:

          管理人のRHです。
          匿名さん、ツールの使用とコメントありがとうございます。

          現時点では、Excel以外のWord、powerpoint等のファイルに対しては一括置換は対応しておりませんが、軽微な修正では対応できませんので、対応した形にアップデートしますので、もうしばらくお待ち下さい。

          • RH より:

            管理人のRHです。
            匿名さんへ

            当ツールを、Excel以外のWord、powerpoint等のファイルに対しても一括置換するようにアップデートしましたので、お時間あるときにご確認ください。

      16. […] その他の方法として、VBAを使った方法もあるようだ。 参考サイト⇒複数文字列を一括で置換するマクロツール(Excel VBA) […]