字表具有可变的行数和列数。 下面的代码是我从先前在此论坛中得到的答案中获取的,并尝试对其进行修改。但是,由于缺乏知识,我可以找到或能够对其进行进一步的编辑。
表中很少有行在图像中用黄色标记的段落分隔符(¶),而在同一行中,很少有带有绿色标记的文本。
我尝试查找段落中断行。如果找到,则在下面添加行,并将内容分成两行。下面的图像说明详细信息。下表显示了打开格式标记的图像。
第一行具有可变宽度。因此,从第2行到最后一行查找,因为其余行相似。前三列保持不变。
找到个类似的帖子,但没有拆分行内容(MS Word table -macro to find row containing specific text then move entire row to last row in the table)。我尝试找到“ ^ p”。
最后一行的第4列在任何行中都有段落分隔符。在该行之后添加新行,并复制上一行的内容,然后拆分。列1至3在文本之间有空格。
类似的帖子Moving down a row in a Word table containing multi-paragraph cells 但不能在混合宽度表中使用。
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
答案 0 :(得分:1)
我怀疑宏记录器在这里是否会提供帮助。试试:
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