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

2016年11月20日

以下の記事のアップデート版です。
【コード】字下げインデントを全角スペースに変換するWordマクロ 
【コード】字下げインデントを全角スペースに変換するWordマクロ(文書全体編) 

以前紹介した上記のWordマクロは、和文において入力オートフォーマットにより勝手にインデントが設定されてしまった場合にインデントを解除して全角スペースを挿入するためのマクロでした。

今回は、お客様からの要望で英文のタブ挿入にも対応するマクロを作成してみました。そういえば、英文でも同じようなニーズはありそうですね。

このマクロでは、英文においてインデントが設定されている箇所をタブに変換します。以前のように全角スペースも挿入できるようにしています。

このマクロでできること

文書全体のメイン文書(本文の入力箇所)を処理対象にしています。

インデントにより段落先頭のスペースが挿入されている箇所をタブ(または全角スペース)に変更します。

挿入したタブ(または全角スペース)箇所を明るい緑の蛍光ペンで着色します。

(実行前)

赤矢印で示した箇所はスペースが空いていますが、タブ記号が見えません。そうです。この部分には左インデントが設定されているのです。

インデント

(実行後)

マクロを実行するとダイアログボックスが表示されます。インデントを全角スペースに変換する場合には1を、タブに変換する場合には2を入力して[OK]ボタンをクリックします。

今回の例では、2を入力します。

インデント

タブが設定されて、明るい緑色の蛍光ペンで着色されました。文書全体で処理された箇所がわかるので、蛍光ペンを頼りにして見直しができます。

インデント

マクロの解説

前回の記事(【コード】字下げインデントを全角スペースに変換するWordマクロ(文書全体編))のコードに基づいて作りました。

前回からの変更点は、蛍光ペンの着色方法です。

前回は、インデント箇所を特定して全角スペースを挿入した後に、挿入した全角スペースを特定するためにわざわ Rangeオブジェクトを作り範囲指定していました。

Set myRange = myDoc.Range(.Range.Start, .Range.Start + 1)
myRange.HighlightColorIndex = wdBrightGreen

しかし、実際にはこのようなことは必要なくて、選択範囲の1文字目を指定する方法はあるのです。Characters.Firstプロパティです。以下のようにしています。(27行目)

.Range.Characters.First.HighlightColorIndex = wdBrightGreen

マクロ


Sub 字下げインデントを変換_文書全体()

 Dim myPara As Paragraph
 Dim myResult As String
 Dim myChar As String

 myResult = InputBox("挿入する記号を選択してください。" & vbCr & _
       "スペース:" & vbTab & "1" & vbCr & _
       "タブ:" & vbTab & "2", "インデント変換マクロ", 1)

 Select Case StrConv(myResult, vbNarrow)
  Case 1
   myChar = " "
  Case 2
   myChar = vbTab
  Case Else
   Exit Sub
 End Select

 For Each myPara In ActiveDocument.Paragraphs
  If myPara.FirstLineIndent > 0 Then
   With myPara
    .CharacterUnitFirstLineIndent = 0
    .FirstLineIndent = 0
    With .Range
     .InsertBefore Text:=myChar
     .Characters.First.HighlightColorIndex = wdBrightGreen
    End With
   End With
  End If
 Next myPara

End Sub

-コード
-, ,