2013年09月13日

複数の置換を一気に実行する

DTP作業者にとっての難易度 ★★★☆☆(3)

編集者の方からテキストデータを頂戴した後、用語統一のために「又は」を「または」に置換、「及び」を「および」に置換、「○カ月」を「○ヶ月」に置換……など数多くの置換を実行するケースがあります。私が経験した仕事では100パターン以上の置換が必要になることもありました。

このような時にWordやInDesignの検索/置換を普通に使用していたのでは、いくら時間があっても足りません。今回は、この作業を省力化する方法について書きたいと思います。

※一括処理は作業効率が良い反面、不要な箇所まで置換してしまうおそれがあります。また、レイアウト体裁を整えた後に一括処理をおこなうとレイアウトが崩れる可能性もあります。作業の早い段階で実行しましょう。


Microsoft Word上で一括処理するツール


「WORD文書一括処理ツール」((有)ワールドワード)はVectorなどで入手できるシェアウェアです。私は何年か前に入手した旧バージョン(ver1.7)をMacOSX環境で使用しています。

※最新バージョンは「ver3」ですが残念ながらWindows環境だけで動作するようです。


このツールでは表の左側に検索文字列、右に置換文字列を入力してマクロを実行することで、複数の置換を一気に処理することができます。

※動画は私の使用しているバージョンです。現行バージョンは操作が更に簡単になっているようです。



注目すべきポイントは置換後の文字に蛍光ペンもしくは赤文字を適用できること。必要ない箇所まで置換されていないかどうか確認することができるのです。この後、蛍光ペンや赤文字が適用された文字をWord上で検索して任意の文字スタイルを適用すれば、InDesignにも文字スタイルとして反映させることができます。

※この作業については以前《選択した文字の書式を簡単に指定……文字スタイル》でご紹介しています。


InDesign上で複数の置換を一気に実行する


次に、テキストをInDesignに読み込んだ上で置換を実行すると方法をご紹介します。

「run_Queries 0.3」を使用する


市川せうぞーさんがお作りになった「run_Queries 0.3」(詳しくはこちら)を使っているDTP作業者は多いのではないでしょうか。これは複数のクエリ(検索/置換の設定)を連続実行するJavaScriptで、たいへん便利です。置換の件数が多くなると必要なクエリを用意するのが少し大変かもしれませんが動作はとても軽快です。


Excelと簡単なJavaScriptで複数の検索を実行する


置換項目数が多くなってくると内容の管理が面倒になります。そこでExcelで作った検索/置換リストを使ってInDesignで一括置換できないか考えてみました。つたないJavaScriptですが、よろしければご使用ください。

このJavaScriptは3つのファイルで構成されています(同じ階層に置く必要があります)。「chikan_0912b.jsx」は本体ファイル。「list_kihon.jsx」「list_option.jsx」は、いずれも検索/置換内容を書き込んだリストのファイルです。内容を変更したい場合はExcelファイルを書き換え、「以下をコピーしてJavaScriptにペースト」と表示されている列の内容をJavaScriptファイルに貼り付けてください。

InDesign上でこのJavaScriptを実行すると、置換された文字には「done」という文字スタイル(文字色は赤)が適用されます(用意したテンプレートを使用することが前提です)。ここからリッチテキストを書き出し、あらためてWordで開いてみると「done」が適用された状態が保たれています。編集者の方に「不要な置換が実行されていないか」などを確認していただくこともできるわけです。

今回ご紹介した方法以外にも便利なツールがあるかもしれません。たとえば「検索置換ラクダX」というMac用のフリーソフトも、自分で作成したリストに従って複数の置換を一括処理することができます。ただ、置換された箇所が後で判断できないため、私は今回のような目的では使用していません。何か良いツールをご存じの方がいらっしゃいましたら、ぜひお知らせください。
サンプルデータはこちら《0913minimum.zip》です(CS4以降)。

※MacOSX・InDesignCS4で動作を確認しましたが、他の環境(特にWindows)で正しく動くかどうか確認できておりません。あしからずご了承ください。

2016.11.25にアップした別ページ『JavaScriptで複数一括置換【改良版】』(ここをクリックすると別ウインドウで開きます)では、このJavaScriptの改良版をご紹介しています。Excelを使用しないため作業が簡単になりました。


(追記)

私が使っている「WORD文書一括処理ツール」の旧バージョン(v1.7)はMac版Word2004および2011では動作することを確認しています。しかしマクロに対応していないMac版Microsoft Word2008では動作しません。

(20130915追記)

テキストエディタ「Jedit X」に「複数一括置換」機能があることをご指摘いただき、試してみました。とても分かりやすく使いやすい機能です。検索/置換には正規表現を使うことができます。また、リストはテキストファイルとして保存・編集できます。

(20170317追記)

Jedit Xで複数一括置換をおこなった後、置換した部分に文字色をつける方法が分かりました。下のコメント欄をご覧ください(動画、サンプルファイルもあります)。

091501.png

(20170124追記)

InDesign上で複数置換を実行するJavaScriptの改良版を、2016年11月に『JavaScriptで複数一括置換【改良版】』(http://mottainaidtp.seesaa.net/article/444309094.html)でご紹介しています。併せてご覧ください。
posted by 照山裕爾 at 03:46| Comment(5) | TrackBack(0) | テキストデータ・Word | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
複数一括変換、大変、役に立ちました。
体→身体 本体や体重などの体も変わってしまいます。熟語を除く場合はどうかけばいいでしょうか?
奥行→奥行き もともと合っていたものが「奥行きき」になってしまいました。「奥行き」を除く指定は可能でしょうか?
Posted by 井黒正人 at 2015年11月05日 15:27
井黒さま
コメントをありがとうございます。
……………………………………………………
JeditXやInDesign+JavaScriptを使用する場合、
正規表現によって不要な置換をある程度は回避できます。

たとえば「奥行→奥行き」を実現するのであれば
JeditXでもInDesign+JavaScriptでも
検索文字列を「奥行(?!き)」、置換文字列を「奥行き」とします。

「体→身体」の置換を実行するケースで
「身体(最初からこの表記だったもの)」「本体」「体重」
については置換しない場合であれば少し複雑で
検索文字列を「(?<![身本])体(?!重)」、置換文字列を「身体」とします。

正規表現による検索/置換については本ブログの
「正規表現による検索/置換の例……疑問符の後にスペースを挿入」
http://mottainaidtp.seesaa.net/article/363638823.html
でも少し紹介していますので、よろしければご覧ください。

※余談ですが、私は「サルにもわかる正規表現入門」
 (http://www.mnet.ne.jp/~nakama/)というサイトで
 正規表現を勉強しました。
……………………………………………………
なお、正規表現を使用しないのであれば、行数は増えますが

一度目の検索置換で「奥行→奥行き」を実行し、
二度目の検索置換で「奥行きき→奥行き」を実行する
などの方法が確実だと思います。
Posted by 照山裕爾 at 2015年11月05日 17:14
複数一括変換、動画でのご丁寧な説明、初心者でも分かりやすく大変役に立ちました。
ありがとうございます。

「Jedit X」を最近使用しはじめ、「全角→半角」など使用感も気に入っています。

「複数一括置換」機能に一括置換したい用語を登録したものの、置換したものに色がつかず、後から目視で確認するのが困難な為、結局使用出来てません。

置換えた用語に色がつく方法をご存知でしたら、是非ご教授ください。

どうぞよろしくお願いいたします。



Posted by しろ at 2017年03月17日 00:40
しろ様
コメントをありがとうございます。

Jedit Xで複数一括置換した箇所を目立たせたい場合、
私は置換文字列を★と☆などで挟むことにしています。
たとえば
検索文字列:従って 置換文字列:★したがって☆
といった感じです。

なお、今回のご質問をきっかけに探してみたところ、
Jedit Xの開発元であるartman21が
FindWithStyleというフリーウェアを公開しているのを見つけました。
http://www.artman21.com/jp/jedit_x/addinprogram.html

これを使うと置換時に文字色を指定することができます。
Jedit Xで先の複数一括置換を実行した後、
FindWithStyleで
検索文字列:★(.+?)☆ 置換文字列:\1
と設定し、置換後の文字色を指定すると、
★と☆は削除され、挟まれていた文字列に色がつきます。

【動画】
https://youtu.be/UoOiEh8KRE8

【サンプルファイル】
http://mottainaidtp.up.seesaa.net/image/0317minimum.zip

便利なので、私も仕事に使ってみようと思います。
いいきっかけを、ありがとうございます。

これからもよろしくお願いします。
Posted by 照山裕爾 at 2017年03月17日 02:25
早速のご回答、ありがとうございます!

動画とサンプルファイルのお陰で、分かりやすく練習する事が出来ました。
色がついた時には思わず拍手w

今まで入稿原稿全てを目視で確認作業をしていましたが、早速使ってみようと思います。

本当にありがとうございました。
また何かありました時は、どうぞよろしくお願いいたします。
Posted by しろ at 2017年03月17日 23:41
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/374665363

この記事へのトラックバック