以前の記事「【Wordマクロ】字下げインデントを全角スペースに変換する 」にて、カーソルがある段落のインデントを解除して全角スペースに変換するマクロを紹介しました。
和文の特許明細書では、字下げのために段落先頭に全角スペースを入力する必要があります。
しかし、Wordの便利な機能(おせっかい機能とも呼ばれる)のせいで、全角スペースを入力したつもりが勝手にインデント調整されてしまうことはあります。(詳細は上記の記事をご覧ください)
そこで、今回は、文書全体の字下げインデントを自動的に全角スペースに変換するマクロを紹介します。
この手の文書全体へのマクロで怖いのは、どこを処理したのかわからなくなることだと思います。
なので、処理をしたところは蛍光ペンで着色しますのでご安心を!
このマクロでできること
現在カーソルが置かれている文書のインデントが設定されている段落のインデント設定を解除し、段落先頭に全角スペースを1つ挿入します。
挿入した全角スペースを明るい緑の蛍光ペンで着色します。
(実行前) インデント設定を可視化するために、あえて文字列を選択してます。(文字列を選択しなくても同じ結果が得られます。)
(実行後) 文書全体に対して、インデント部分に全角スペースが挿入されました。
マクロの解説
文章全体に対して処理をします。
インデントは段落書式ですから、全ての段落に対して処理をしてみます。よくあるFor Each … Next の構文です。
字下げのある段落は、インデントの最初の行の設定値がプラスになるので、その値で判定します。
蛍光ペンの着色ですが、段落先頭の1文字分をRangeオブジェクトである myRange に設定してこのmyRange に蛍光ペンで着色をしてみました。
マクロ
Sub 字下げインデントを全角スペースに変換_文書() Dim myPara As Paragraph Dim myRange As Range Dim myDoc As Document Set myDoc = ActiveDocument For Each myPara In myDoc.Paragraphs If myPara.FirstLineIndent > 0 Then With myPara .CharacterUnitFirstLineIndent = 0 .FirstLineIndent = 0 .Range.InsertBefore Text:=" " Set myRange = myDoc.Range(.Range.Start, .Range.Start + 1) myRange.HighlightColorIndex = wdBrightGreen End With End If Next myPara Set myRange = Nothing Set myDoc = Nothing End Sub