【Word VBA】セル内の文字の配置を変更するWordマクロ

2018年1月26日

今週末のWordマクロセミナーの資料を作成していたときに別のファイルからスタイルをコピーしました。

(スタイルのコピーには、「【コード】Wordファイルからスタイルを全てコピーするWordマクロ 」で紹介したマクロを使いました。)

そのときに表内の文字の配置がくずれて見栄えが悪くなりましたので、調整が必要になりました。

この調整のために、セル内の余白や段落間隔を調整せねばならず大変手間でした。そこでマクロで実行することにしました。

このマクロでできること

セル内の段落間隔の調整とセル内の上下余白の調整ができます。

(マクロ実行前)

(マクロ実行後)

マクロの解説

マクロを2つ紹介します。マクロ1では、カーソルが置かれた表に対して処理をします。マクロ2では文書内の全ての表に対して処理をします。

考え方は同じで、おなじみのFor Each ... Nextステートメントで、表内のセル1つ1つに処理をしています。

表内の余白は、表ツールの[レイアウト]タブにある以下のボタンから操作をして調整します。

この④の操作をマクロ1では10行目と11行目、マクロ2では13行目と14行目で実行しています。

段落後のスペースの調整は、以下のように[レイアウト]タブ[段落]グループのボタンで調整できます。

これをマクロ1では15行目~20行目、マクロ2では18行目~23行目で実行しています。

マクロ1(カーソルのある表を対象)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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(文書内の全ての表を対象)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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

関連記事

【コード】Wordファイルからスタイルを全てコピーするWordマクロ

-コード
-,

S