秀丸マクロ, Word VBA, or the like -25ページ目

即席マクロ(4)-replaceallfast

今回作るマクロは、選択されている行(段落)を文章毎に区切るマクロです。

つまり、
文章・・・・・。文章・・・・・。文章・・・・・。文章・・・・・。文章・・・・・。

というのを。

文章・・・・・。
文章・・・・・。
文章・・・・・。
文章・・・・・。
文章・・・・・。
文章・・・・・。

という具合に、句点『。』で改行するというものです。

使用するコマンドはreplaceallfastです。

コードは以下の通りです。

replaceallfast "。", "。\n", regular, inselect;


但し、これだけでは、範囲が選択されていない状態(一文字も選択されていない状態)でマクロを実行すると全ての段落が文章毎に改行されてしまいます。

これを防ぐには、最初に以下のようなコードを書きます。

if (!selecting) endmacro;
replaceallfast "。", "。\n", regular, inselect;


if (!selecting) endmacro; は範囲選択がされてない場合、マクロを終了するという意味のまじないと思ってください。深く考えなくていいです。

これで、誤動作で全部の段落を文章毎に改行してしまうという事故を防ぐことが出来ます。


さて、replaceallfastについてもう少し詳しく説明します。

replace all fast (迅速に全置換する) ということからわかるように、全置換を行わせるコマンドです。

このコマンドは、秀丸仲間のくま(翻訳者)さんが、

自身のブログ『ある翻訳者の日常』で、先駆けて取り上げられています。

英日がご専門のようで、英日翻訳でのマクロの活用方法が取り扱われており非常に面白いです。


さて、replaceallfastの使用方法(書き方)ですが、簡単に書くと以下のとおりです。

replaceallfast "検索文字列", "置換後の文字列", オプション;

オプションとは、単語単位で検索するとか、大文字/小文字を区別するなどの検索・置換を行う上での条件のことです。

オプションとして設定できる項目は結構あるので、幾つか自分がよく使うものを紹介します。

オプション名機能
word単語単位で検索・置換します。
regular正規表現を有効にします。
inselect選択範囲でのみ置換を行います。
(但し選択されている行全体が対象になります。)
casesense大文字/小文字を区別します。


これらオプションは、必要なものを","(コンマ)で区切って並べます。

順番は特にどうでもいいようです。

例えば、正規表現を使って、選択範囲だけ置換を行いたい場合は、

replaceallfast "検索文字列", "置換後の文字列", inselect, regular;

又は、

replaceallfast "検索文字列", "置換後の文字列", regular, inselect;

となります。

どちらでも効果は同じです。

また、オプションは必要なければ、完全に省略することも可能であり、単純に

replaceallfast "検索文字列", "置換後の文字列";

とすることも可能です。




マクロの作成手順は、『マクロを作ってみよう』の(1)~(5)を参照ください。
マクロの登録は、『マクロの登録方法』を参照ください。
ショートカットキーの割り当ては、『ショートカットキーを割り当てる』を参照ください。