Word table 查找分段符,将行内容拆分为两行

Word table find paragraph break, split row content in to two row

单词 tables 具有可变的行数和列数。 下面的代码是我从之前在这个论坛上回答的,并尝试修改它。但是,由于缺乏知识,我可以找到或能够进一步编辑它。

table 中有几行在图像中以黄色标记为段落分隔符 (¶),在同一行中有几行 space 以绿色标记的文本。

我已尝试查找用于分段的行。如果找到,请在下方添加行并将内容拆分为两行。下面的图片,解释细节。以下 table 图像由打开格式标记呈现。

第一行宽度可变。因此,从第 2 行到最后一行查找,因为其余行相似。前三列保持不变。

找到相似 post 但未拆分行内容 (MS Word table -macro to find row containing specific text then move entire row to last row in the table)。我试图找到“^p”。

倒数第 4 列的任意行中有段落分隔符。新行在上面的行之后添加并复制内容然后拆分。第 1 至 3 列的文本之间有 space。

相似postMoving down a row in a Word table containing multi-paragraph cells 但不适用于混合宽度 table.

Sub FindParagraph()
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^p"
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = False
.Execute
End With
Do While .Find.Found
If .Information(wdWithInTable) = True Then

'Don not know code.



End If
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
End Sub

我怀疑宏记录器在这里会有多大帮助。尝试:

Sub Demo()
Application.ScreenUpdating = False
Dim Tbl As Table, r As Long, c As Long, bFnd As Boolean
For Each Tbl In ActiveDocument.Tables
  With Tbl
    For r = .Rows.Count To 2 Step -1
      With .Rows(r).Range.Find
        .Text = " "
        .Replacement.Text = "^p"
        .Execute Replace:=wdReplaceAll
        .Text = "^p"
        .Execute
        bFnd = .Found
      End With
      If bFnd = True Then
        .Rows.Add .Rows(r)
        For c = 1 To .Columns.Count
          If .Cell(r + 1, c).Range.Paragraphs.Count > 1 Then
            .Cell(r, c).Range.Text = Split(.Cell(r + 1, c).Range.Text, vbCr)(0)
            .Cell(r + 1, c).Range.Paragraphs(1).Range.Text = vbNullString
          End If
        Next
      End If
    Next
  End With
Next
Application.ScreenUpdating = True
End Sub