element-ui的表格增加行_VBA实践(8)--word表格批量修改,增行合并

12e02cb172b7ad5ca0d04db30c866732.png

Word表格批量修改,增行后合并

1、问题描述

碰到这样一个问题:由于制作时的失误,word文档中大量表格变成了如下图所示的样子。

ca19a631957d025ac7a6c10457dbbf13.png

而正确的表格,“合格”、“现场修复”和“待修”应该在第二行里,如下图所示

22b46e703afb4806b98a6d423218d07e.png

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、逐步演示

0d58d36b7cf572bd520a62b59407b334.png
https://www.zhihu.com/video/1185214936845828096

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”代替。不知道是什么原因。

欢迎交流讨论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值