【コード】表のセルを結合するWordマクロ

書類づくりをしていて特定の行の特定のセルを結合する必要がありました。200ページ以上もある表で数千行あるので手作業では難しいと思いまして、マクロを作って対処しました。

このマクロでできること

2列目と3列目のセルが空欄の場合に1列目から3列目のセルを結合します。複数の列をまとめて結合することがポイントです。

(マクロ実行前)

(マクロ実行後)

3行目と6行目が結合されました。

マクロの解説

表の行を一つずつ処理をします。Excelマクロと似た考え方でカウンター変数 i を使って処理をすればよいと思います。

結合するか否かの判定基準は、「2列目のセルと3列目のセルが空の場合」です。Wordの表では、セルが空の場合には、セル内の文字列が Chr(13) & Chr(7) となります(13行目、14行目)。

これは、別の記事(【コード】最終段落にカーソルを移動するWordマクロ )でも使いました。

セルの結合は、Rangeで指定した範囲内のCells.Merge メソッドを使います。

今回は、1列目から3列目までを結合させるので1列目の先頭から3列目の末尾までのRangeを指定しています。

マクロ


Sub 表のセルを結合するマクロ()
 
 Dim myDoc As Document
 Dim myTable As Table
 Dim i As Integer
 
 Set myDoc = ActiveDocument
 Set myTable = myDoc.Tables(1)
 
 For i = 1 To myTable.Rows.Count
  With myTable
   '2列目と3列目のセルが空欄の場合に実行
   If .Cell(i, 2).Range.Text = Chr(13) & Chr(7) And _
     .Cell(i, 3).Range.Text = Chr(13) & Chr(7) Then
    '1列目~3列目のセルを結合
    myDoc.Range(.Cell(i, 1).Range.Start, .Cell(i, 3).Range.End).Cells.Merge
   End If
  End With
 Next
 
 Set myDoc = Nothing
 Set myTable = Nothing
 
End Sub

関連記事

【コード】最終段落にカーソルを移動するWordマクロ

トップへ戻る