Word表格批量修改,增行后合并
1、问题描述
碰到这样一个问题:由于制作时的失误,word文档中大量表格变成了如下图所示的样子。
而正确的表格,“合格”、“现场修复”和“待修”应该在第二行里,如下图所示
2、想法
利用VBA,遍历每一个表格,在“001”所在行的上方新增一个空白行,然后新增行及其上方一行,第1列的两个单元格合并;第2列的两个单元格合并;第3-5列的,“001”所在行的内容移动到新增行。
如果直接把“状态评价”所在的单元格拆分2行3列,似乎更简单,但恐怕拆分出来的三列很难和下面的三列对齐,所以放弃这个做法。
注意:删除单元格的语句是tal.Cell(4, i).Delete;删除单元格内容tal.Cell(4, i).Range.Delete。
3、实现代码如下:
Sub 表格增行合并()
Dim tal As Table, i%
For Each tal In ActiveDocument.Tables
tal.Rows(3).Select
Selection.InsertRowsAbove 1 '在第三行上方增加一行
ActiveDocument.Range(tal.Cell(2, 2).Range.Start, tal.Cell(3, 2).Range.End).Cells.Merge '合并2行和3行第2列的两个单元格
ActiveDocument.Range(tal.Cell(2, 1).Range.Start, tal.Cell(3, 1).Range.End).Select '2行和3行第1列的两个单元格无法直接合并,要选择后,再合并
Selection.Cells.Merge
For i = 3 To 5
tal.Cell(3, i).Range = Left(tal.Cell(4, i).Range, Len(tal.Cell(4, i).Range) - 2) '获得下一单元格文本,赋值给上一单元格
tal.Cell(4, i).Range.Delete '删除下单元格内容
next i
Next
End Sub
4、逐步演示
5、一个不明问题
“ActiveDocument.Range(tal.Cell(2, 1).Range.Start, tal.Cell(3, 1).Range.End).Cells.Merge”,这个语句不能运行,有错误提示:运行时错误‘5941’,集合所要求的成员不存在。所以只能用“ActiveDocument.Range(tal.Cell(2, 1).Range.Start, tal.Cell(3, 1).Range.End).Select Selection.Cells.Merge”代替。不知道是什么原因。
欢迎交流讨论