Word VBA/マクロ 備忘録

作業効率化のため作成したマクロをバックアップ代わりにアップしていきます。

【Word VBA/マクロ】インデントの単位変換(○字→mm)

サンプルコードでできること

インデントの単位○字をmmかptに変更します。変更される単位はオプションの設定によります。

次のような単位が不揃いの時に使用します。

Sub インデントの単位_mmやptに変換()
    Dim para As Paragraph
    
    For Each para In Selection.Paragraphs
        With para.Range.ParagraphFormat
            .CharacterUnitFirstLineIndent = 0
            .CharacterUnitLeftIndent = 0
        End With
    Next para
End Sub

コードの説明

        With para.Range.ParagraphFormat
            .CharacterUnitFirstLineIndent = 0
            .CharacterUnitLeftIndent = 0
        End With

CharacterUnitFirstLineIndentは字下げ(ぶら下げ)インデント、CharacterUnitLeftIndentは左インデントを「○字」で指定するプロパティです。これを「0」にするだけで、mm(pt)表示に変更されます。
mm(pt)に換算して、LeftIndentやFirstLineIndentの値を格納する必要があると思い込んでいました。


試しに .CharacterUnitLeftIndent で左インデント3字を指定、次に .LeftIndentで5mm指定しました。

    With Selection.ParagraphFormat
        .CharacterUnitLeftIndent = 3 '左インデント3字指定
        .LeftIndent = 5 '左インデント5mm指定
    End With

処理の結果、CharacterUnitLeftIndent の3字指定が優先されました。

  • CharacterUnitLeftIndentや CharacterUnitFirstLineIndentに0以外の数値が設定。⇒LeftIndent やFirstLineIndentに値を設定しても、インデントに反映されない。
  • CharacterUnitLeftIndentや CharacterUnitFirstLineIndentが0。⇒LeftIndent やFirstLineIndentの値がインデントに反映される。
  • ○字単位のインデントが指定された段落の値を変更するとき、 CharacterUnitLeftIndentやCharacterUnitFirstLineIndentで値を指定するか、値を0にしてmm(pt)単位に変更後、LeftIndent 、FirstLineIndentで指定する。