#はじめに
前回に引き続き初心者向けの記事を書いていきます。
今回は簡単にフォルダ内のWordファイルに含まれた特定の文字列を一括で置換するシナリオです。
そろそろ消費税増税の頃ですし、社内でも一括で変更出来るようにしてほしい、という依頼があったため作成しました。
#要件
-
消費税額が8%と記載されているWordファイルを10%に一括で書き換えたい
-
置換前のファイルも残しておきたいため、変更前フォルダと変更後フォルダを用意し、変更したファイルは上書き保存せずに変更後フォルダに保存をする
-
半角全角が混じっている可能性があるので、どちらで入力されていても置換させる
-
動作出来る数に上限をつけ、ファイル数が既定の数を超えたらアラートを表示する
上のフローチャートを流れをざっと説明すると、
- 「変更前」フォルダ内のファイル数を取得し(ファイル数が101以上であればメッセージを表示して停止)
- 「変更前」フォルダ内のファイル名を上から順番に読み取って
- Word内の文字列を「8%」→「10%」に置換する
- 名前を付けて保存(保存先は「変更後」フォルダになっている)
- 上記を2.から、1.で取得したファイル数回だけ繰り返す
という機能です。
-
ファイルの保存先変更は変数「fname」から変数「Change」に一度値を渡して、「Change」内のファイルパスの「変更前」部分を「変更後」に置換して行っています(変数「fname」を残しておく理由は元ファイルのファイルパスを名前をつけて保存の工程でWinActor側に要求されてるため)。
-
Word内の文字列置換(画像の「検索した文字列を置換……」の部分)はライブラリが用意されていなかったのでユーザーフォーラムに投稿されていたスクリプト探究者様の**【ユーザーライブラリ】Word文字列一括置換方法**をお借りしました。
全角と半角の区別をFalseにして区別させずにすべて置換出来るようにして使っています。 -
ファイル<101とありますが、101は上限のファイル数です。この数は各々PCのスペックに合わせて上限を変更してください(前に別なシナリオ作成した時にデータ数が多すぎて途中から処理が追い付かなくて失敗した事があったので、少なめで設定して始めています)。
#まとめ
かなり簡易的な作りなのであんまり書くことないですが、こんな感じで100件5分47秒程度で置換完了します。
導入したてで難しい事は出来ないけどなにか役に立った成果を残しておきたい!そんな時にいかがでしょうか?(愚)
最初は配列を使って一気にファイル名を取得してから文字列置換をしていこうと思っていたのですがうまくいかなかったのでWinActor配列マスターの人は教えてほしいです……