技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

Excelで文字の一括置換を行う方法(テキストエディタ利用)

Excelファイルは複数のxmlファイルを圧縮して構成されています。
解凍することでxmlファイルの形式として開けるようになり、通常のテキストエディタで編集することが可能になります。
これを利用することで、全てのシートに対して、オブジェクト内の文字も含めた文字の一括置換が可能になります。
Excelの機能ではオブジェクト内の文字を検索したり置換したりすることができません)
 
以下、手順です。
 
1.Excel形式のファイルを用意する
f:id:akira2kun:20191205225428j:plain
f:id:akira2kun:20191205225439j:plain

 
2.拡張子を「.xlsx」から「.zip」へ変更する

f:id:akira2kun:20191205225915j:plain
 
3.2のファイルをLhaplus等で解凍する
f:id:akira2kun:20191205230138j:plain
 
4.サクラエディタgrep置換等の機能で文字の一括置換をかける
f:id:akira2kun:20191205230152j:plain

※本文中の文字は xl\sharedStrings.xml に定義されます。
※図形中の文字は xl\drawings\drawing*.xml に定義されます。
※drawing*.xml に関しては、半角文字と全角文字が入れ替わる箇所で、
 xmlファイル上で別々の定義になるので注意が必要です。
 例えば、「hogeほげ」という文字については、
 xmlファイル上で「hoge」と「ほげ」という文字に分割されます。
 
5.Lhaplus等で再度圧縮する
f:id:akira2kun:20191205230202j:plain

※1のファイル名のフォルダの直下で作業を行う必要があることに注意
 
6.圧縮されたファイルについて、拡張子を「.zip」から「.xlsx」へ変更する
f:id:akira2kun:20191205230213j:plain

 
7.6のファイルを開いて置換されたことを確認
f:id:akira2kun:20191205230225j:plain

f:id:akira2kun:20191205230236j:plain
※「~の一部の内容に問題が見つかりました。可能な限り内容を回復しますか?」と聞かれるかもしれませんが、「はい」で良いです。
 
----------------
 
なお、7-Zipを用いれば、解凍や圧縮をコマンドラインから行うことが可能になります。
また、サクラエディタにはコマンドラインからマクロを読みこませる機能もあります。
これらの機能を組み合わせれば、バッチファイルから複数のExcelファイルに対して一括置換を行うことも可能になります。