今週末のWordマクロセミナーの資料を作成していたときに別のファイルからスタイルをコピーしました。
(スタイルのコピーには、「【コード】Wordファイルからスタイルを全てコピーするWordマクロ 」で紹介したマクロを使いました。)
そのときに表内の文字の配置がくずれて見栄えが悪くなりましたので、調整が必要になりました。
この調整のために、セル内の余白や段落間隔を調整せねばならず大変手間でした。そこでマクロで実行することにしました。
このマクロでできること
セル内の段落間隔の調整とセル内の上下余白の調整ができます。
(マクロ実行前)
(マクロ実行後)
マクロの解説
マクロを2つ紹介します。マクロ1では、カーソルが置かれた表に対して処理をします。マクロ2では文書内の全ての表に対して処理をします。
考え方は同じで、おなじみのFor Each … Nextステートメントで、表内のセル1つ1つに処理をしています。
表内の余白は、表ツールの[レイアウト]タブにある以下のボタンから操作をして調整します。
この④の操作をマクロ1では10行目と11行目、マクロ2では13行目と14行目で実行しています。
段落後のスペースの調整は、以下のように[レイアウト]タブの[段落]グループのボタンで調整できます。
これをマクロ1では15行目~20行目、マクロ2では18行目~23行目で実行しています。
マクロ1(カーソルのある表を対象)
Sub セル内の文字の配置を変更するマクロ1() Dim myCell As Cell Dim myPara As Paragraph For Each myCell In Selection.Tables(1).Range.Cells 'セル内の文字の配置(上下の余白の調整) With myCell .TopPadding = MillimetersToPoints(1) .BottomPadding = MillimetersToPoints(1) End With '段落後の間隔 For Each myPara In myCell.Range.Paragraphs With myPara.Range.ParagraphFormat .LineUnitAfter = 0 .SpaceAfter = 0 End With Next myPara Next myCell End Sub
マクロ2(文書内の全ての表を対象)
Sub セル内の文字の配置を変更するマクロ2() Dim myTable As Table Dim myCell As Cell Dim myPara As Paragraph For Each myTable In ActiveDocument.Tables For Each myCell In myTable.Range.Cells 'セル内の文字の配置(上下の余白の調整) With myCell .TopPadding = MillimetersToPoints(1) .BottomPadding = MillimetersToPoints(1) End With '段落後の間隔 For Each myPara In myCell.Range.Paragraphs With myPara.Range.ParagraphFormat .LineUnitAfter = 0 .SpaceAfter = 0 End With Next myPara Next myCell Next myTable End Sub