【PowerShell】Excel_Word_文字置換プログラム作成_Replace

Excel

【PowerShell】Excel_Word_文字置換プログラム作成_Replace

多数のExcelやWordで文字置換したい

業務で帳票類やエビデンス、社内情報のExcelファイルが大量にある中で、会社名が変更されるとか名称が変更されるなどのタイミングで全部のExcelファイルを変更しなければならない業務が降ってきます。

一つ一つファイルを開いて、文字変更して、保存して閉じる。

の繰り返し作業を延々とやり続けなければなりません。

「文字列を一括で変更できないか。」

それでは、PowerShellで作成してみようと思い、作成しましたので、ご紹介します。

ご自由に参考にしてくれれば、幸いです。

Powershell実行ファイルps1

では、早速ですが、ソースコードを載せます。

PowerShell実行

ショートカットからドラッグアンドドロップ

PowerShellの実行ファイルである、「ps1ファイル」のショートカット作成しておきます。

ショートカット作成することで、フォルダをドラッグアンドドロップして置換を実行できるようになるので、効率的です。

powershell_draganddrop

ショートカット作成したら、プロパティ画面を開いて、リンク先の先頭に

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -File

を書き足します。

そうすることで、ファイルをドラッグアンドドロップできるようになります。

powershell_shortcut

コンソール画面からコマンド

ショートカット作成しないで、コンソールから実行したい場合は、

ps1ファイルのディレクトリまで移動して、<ps1ファイル名> <置換したいフォルダ> <検索文字列> <置換文字列>

で実行できます。検索文字列と、置換文字列は、ps1ファイル内でも指定できます。

powershell_console
powershell_execute_after

フォルダ前後

実行後、置換したファイルを保存したNewフォルダが作成されますので、

置換前のフォルダと置換後のフォルダを分けることができ、置換前と比べることもできます。

replace_beforeafter_folder

ps1ファイル内から置換文字指定

powershell_old_new_str

ps1ファイルの先頭の方に、文字列指定するパラメーター設定を設けています。

$OldStr=”検索文字列”

$NewStr=”置換文字列”

文字を置換したいExcelWord

Excel 置換前

excel_before

 

Excel  置換後

excel_after

Word 置換前

word_before

Word  置換後

word_after

Point

  • Excelファイルでは、複数シート対応
  • 拡張子(.xls .xlsx .doc .docx)対応
  • フォルダ階層は深くてもOK
  • テキストボックス内の置換可能
  • ヘッダーheader、フッターfooterの置換可能