ブログの読者の方からのご質問です。どのように考えればよいのか複数回の記事に分けて説明します。
<目次>
お題
タイトルにもあるように、特許明細書の段落番号([0001]、[0002]など4桁の数字)の直後に半角スペースを4つ挿入したいというものです。
お題解説
おそらくは(ご質問をいただいた方には詳細を確認していない(笑))、日英の特許翻訳をした方が半角スペースをご自身で挿入していると思うのですが、その数が3つだったり5つだったりすることがあるようなのです。もしくは何も入力していない箇所もあるのかもしれません。
私の経験では、段落番号の直後に「全角スペース」が入っていたり「タブ記号」が入っていたりすることもあると思います。
なので、このようなマクロを作成する際には、ある程度の条件を想定しておきます。
ただ、あんまり考えすぎても先に進めないので、基本的には特定の条件を設定してマクロを作り始めたほうがいいですね。
半角スペースの数は少なくとも1つは入っていて、場所によっては3つだったり5つだったり、いろいろあると想定しましょう。これにワイルドカードの知識をなしでおおざっぱに処理をしてみたいと思います。
上記の「全角スペース」や「タブ記号」については、マクロを作ってから運用したときに気がつくことだと思いますので、現時点では無視してスペースのことだけを考えてみます。
そして、まずはマクロの記録でできる程度のこと(つまり、手動で[検索と置換]ダイアログボックスの置換機能でできること)を紹介してみます。
このマクロでできること
英文特許明細書で使われる半角の段落番号([0001]、[0002]など)の直後に半角スペースを3つ挿入します。通常は、半角スペースが1つ入っていると思うので、合計数を4つにするために3つ挿入します。
挿入後にチェックをして、半角スペースの数が5個ある場合には現在選択されている蛍光ペンの色(たとえば黄色)で着色をしてアラートを表示します。
(実行前)
(実行後)
半角スペースが5個以上ある箇所を着色しています。
マクロの解説
上記の半角スペースの挿入も、不備のある箇所の判定もともに特殊記号を使います。今回の記事ではワイルドカードはあえて使わない方針としてみました。
[検索と置換]ダイアログボックスの一括置換でうまくいくことを確認してから、マクロの記録でコードを取得したら完成です。
マクロの自動記録
半角スペースの挿入については以下の通りです。上記のサンプルファイルにあるように、段落番号の直後にはおそらく半角スペースが1つだけ挿入されていると思うので、それを対象に半角スペースが4つになるように半角スペースを3つ挿入する置換をしてみようと思います。
以下のアンダーバーは半角スペース3つを示しています。任意の数字を示す特殊文字(^#)を使っているので、Wordの検索オプションはすべてオフにしてください。
検索する文字列:[^#^#^#^#]
置換後の文字列:^&___
特殊文字の使い方は、以下の記事を参考にしてください。ちなみに、[置換後の文字列]欄に記載されている ^& は、検索結果の文字列をそのまま置換で使う場合に使用します。
チェック用の置換です。
半角スペースが5つ以上入っているところは以下の検索式で着色します。置換後の文字列は空の文字列として書式のみを変更します。
以下のアンダーバーは半角スペース5つを示しています。
検索する文字列:[^#^#^#^#]_____
置換後の文字列:
置換後の文字列の書式:蛍光ペン
マクロの記録
3種類のマクロを記録します。
1つ目は、この手の検索・置換をする際には、カーソルを文書の先頭にもっていく必要があります。検索対象の文字列中にカーソルがあると、その文字列を検索できないからです。
マクロの記録をする際には、ショートカットキー(Ctrl + Home)を使いカーソルを移動します。
【Word】「マクロの記録」は、ショートカットキーでの作業も記録できます。
2つ目と3つ目は[検索と置換]ダイアログボックスの一括置換を記録します。
この記事では、マクロの記録についてのコツなどを紹介しませんが、興味のある方は試してみてください。
マクロの記録で取得したコードを編集して以下のマクロを作りました。
マクロ
Sub 段落番号の直後に半角スペースを4つ挿入するWordマクロ() 'カーソルを文書の先頭に移動 Selection.HomeKey Unit:=wdStory '半角スペースを3つ挿入する Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "[^#^#^#^#]" .Replacement.Text = "^& " .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll '半角スペースが5個以上個所を着色 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Highlight = True With Selection.Find .Text = "[^#^#^#^#] " .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
次にすること
段落番号の直後に5個以上スペースがあったらそれを4つに修正すればいいですよね。
ワイルドカードを使えばいいのですが、これもあえてワイルドカードなしでやってみましょう。ワイルドカードがなくてもできますよ。
以下の記事に続きます。
【コード】特許明細書の段落番号の直後に半角スペースを4つ挿入するWordマクロ(その2)