【Word VBA】字下げインデントを全角スペースに変換するWordマクロ(文書全体編)

以前の記事「【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

関連記事

【Wordマクロ】字下げインデントを全角スペースに変換する

トップへ戻る