With Selection.Find
.Text = '^13{2,}'
.Replacement.Text = '^p'
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
Dim myRange As Range
Set myRange = ActiveDocument.Paragraphs(1).Range
If myRange.Text = vbCr Then myRange.Delete
Set myRange = ActiveDocument.Paragraphs.Last.Range
If myRange.Text = vbCr Then myRange.Delete
Dim objTable As Table
Dim myRange As Range
For Each objTable In ActiveDocument.Tables
#If VBA6 Then
objTable.AllowAutoFit = False
#End If
'将范围设置为当前表格后面的段落
Set myRange = objTable.Range
myRange.Collapse wdCollapseEnd
'如果表格后面的段落为空则删除
If myRange.Paragraphs(1).Range.Text = vbCr Then
myRange.Paragraphs(1).Range.Delete
End If
'将范围设置为当前表格前面的段落
Set myRange = objTable.Range
myRange.Collapse wdCollapseStart
myRange.Move wdParagraph, -1
'如果表格前面的段落为空则删除
If myRange.Paragraphs(1).Range.Text = vbCr Then
myRange.Paragraphs(1).Range.Delete
End If
Next objTable
Dim objTable As Table
Dim objCell As Cell
Dim myRange As Range
Dim lngCount As Long
For Each objTable In ActiveDocument.Tables
'使用objCell.Next遍历表格单元格比使用For Each objCell更快
Set objCell = objTable.Range.Cells(1)
For lngCount = 1 To objTable.Range.Cells.Count
If Len(objCell.Range.Text) > 2 And objCell.Range.Characters(1).Text = vbCr Then
'如果单元格不为空但以空段落开始则删除空段落
'注意空单元格包含2个字符;一个是段落标记,一个是单元格末尾标记
objCell.Range.Characters(1).Delete
End If
If Len(objCell.Range.Text) > 2 And Asc(Right$(objCell.Range.Text, 3)) = 13 Then
'如果单元格不为空但以空段落结束则删除空段落
Set myRange = objCell.Range
myRange.MoveEnd Unit:=wdCharacter,Count:=-1
myRange.Characters.Last.Delete
End If
Set objCell = objCell.Next
Next lngCount
Next objTable
Sub DeleteEmptyParagraphs()
Dim myRange As Range
Dim objTable As Table
Dim objCell As Cell
With Selection.Find
.Text = '^13{2,}'
.Replacement.Text = '^p'
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
Set myRange = ActiveDocument.Paragraphs(1).Range
If myRange.Text = vbCr Then myRange.Delete
Set myRange = ActiveDocument.Paragraphs.Last.Range
If myRange.Text = vbCr Then myRange.Delete
For Each objTable In ActiveDocument.Tables
#If VBA6 Then
objTable.AllowAutoFit = False
#End If
Set myRange = objTable.Range
myRange.Collapse wdCollapseEnd
If myRange.Paragraphs(1).Range.Text = vbCr Then
myRange.Paragraphs(1).Range.Delete
End If
Set myRange = objTable.Range
myRange.Collapse wdCollapseStart
myRange.Move wdParagraph, -1
If myRange.Paragraphs(1).Range.Text = vbCr Then
myRange.Paragraphs(1).Range.Delete
End If
Next objTable
End Sub
联系客服