書類づくりをしていて特定の行の特定のセルを結合する必要がありました。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