Word文档空行类型和批量删除空行的方法
有一些word文档会存在大量空行,特别是一些从网络上下载的,或是其他软件转换而来的文档。需要批量删除这些空行以方便排版。
一、空行的类型
先来看看空行的类型。
1. 多余手动换行符产生的空行
手动换行符为向下的灰色箭头,如下图所示。可以使用查找替换功能,批量删除。
查找:^l{1,}
替换:留空
光标置于文首,勾选使用通配符,点击全部替换
2. 多余段落标志产生的空行
段落标志为左拐的灰色箭头,如下图所示。
查找:^13{2,}
替换:^p
光标置于文首,勾选使用通配符,点击全部替换
3. 表格间多余段落标志空行
如下图所示。若表格间只有一个空行,且混杂在一个大文档中,则难以使用查找替换功能,批量删除。
4. 表格单元格内多余段落标志空行
如下图所示,若单元格内第一段就是空行时,且该表格混杂在一个大文档中,则该空行难以用查找替换功能删除。另外,单元格至少都有一个段落标志,所以空单元格的段落标志无法删除。其他空行可以用查找替换功能删除。
5. 分节符空行
一个段落可以以段落标志结束,也可以以分节符结束。如下图所示, 一个段落标志跟着一个分节符,其实这里算是两个空行 。这种空行很可能是不应该被删除的。
二、vba批量删除文档空行的方法
代码1:
代码来源于书本《word排版技术大全》(宋翔 著)
以段落为基本单元,判断段落字符长度为1,则删除。 所以也会把分节符删除 。除了手动换行符的空行和空单元格空行外,都会被删除。
Sub 删除文档内的所有空行()
Dim oPara As Paragraph, I As Long
Application.ScreenUpdating = False
For Each oPara In ActiveDocument.Paragraphs
If Len(oPara.Range) = 1 Then
oPara.Range.Delete
i = i + 1
End If
Next oPara
MsgBox "已删除" & i & "个空行"
Application.ScreenUpdating = True
End Sub
代码2:
在代码1的基础上加了一句And Right(oPara.Range, 1) = Chr(13),删除文档内的所有带段落标志空行, 而不删除分节符空行 。
除了手动换行符的空行和空单元格空行外,都会被删除。
Sub 删除文档内的所有带段落标志空行()
Dim oPara As Paragraph, I As Long
Application.ScreenUpdating = False
For Each oPara In ActiveDocument.Paragraphs
If Len(oPara.Range) = 1 And Right(oPara.Range, 1) = Chr(13) Then
oPara.Range.Delete