以下の記事のアップデート版です。 【コード】字下げインデントを全角スペースに変換する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