将条件合并或合并单词表

时间:2019-05-22 11:12:22

标签: vba ms-word word-table

包含多个表的Word文档。如果有行等于值x的表(例如12),则删除第一行并剪切该表并将其粘贴到上一个表的最后一行下方(意味着将所选表与最后一个表连接在一起)。下面的代码删除第一行,但将同一表粘贴到所选表的上方。我在下面的代码中使用了copy而不是cut。

Private Sub MergeTables()
Dim tbl As Table, r As Row
Dim i As Integer

With ActiveDocument
For Each tbl In ActiveDocument.Tables
    If tbl.Rows.Count = 12 Then
    With tbl
    .Rows(1).Delete
    tbl.Range.Copy 'Need to paste below last row of previous table

    'tbl.Range.GoTo What:=wdGoToTable, Which:=wdGoToPrevious 'Pasting above the same table
    tbl.Range.PasteAndFormat wdFormatOriginalFormatting
    End With
    End If

Next tbl
End With
End Sub

1 个答案:

答案 0 :(得分:1)

提供了第一张表的行数<> 12:

Sub MergeTables()
Dim TblSrc As Table, TblTgt As Table, Rng As Range
For Each TblSrc In ActiveDocument.Tables
    With TblSrc
      If .Rows.Count = 12 Then
        .Rows(1).Delete
        Set Rng = TblTgt.Range
        Rng.Collapse wdCollapseEnd
        Rng.FormattedText = .Range.FormattedText
        .Delete
      Else
        Set TblTgt = TblSrc
      End If
    End With
Next
End Sub