本帖最后由 chendeyan126 于 2019-1-12 12:05 编辑
[ 本帖最后由 chendeyan126 于 2019-1-12 11:53 编辑 ]\n\n通过邮件合并创建的,或者从其他软件转换过来的长文档,可能会存在大量分节符邻表格的情况,如下图所示。分节符与上下表格间没有任何字符,也没有其他任何非打印编辑标志,如段落标志等。出于某种需求,希望把分节符批量替换为段落标志。
分节符紧邻表格
全部替换失败
很容易想到使用“查找和替换”功能进行批量替换,在查找框输入^m,在替换框输入^p,勾选“使用通配符”,如下图所示。点击“全部替换”后,发现替换失败。把替换框换为其他内容,如^p^&,也是失败的。可以查找到它,就是不能替换。
查找替换
查找全部后Delete
既然可以查找到分节符,那么我们一次性选中全部分节符,然后删除。如下图所示,在“查找”选项卡下,在“查找内容”中输入“^b”,然后在“在以下项中查找”选择“主文档”,所有分节符即可被选中。关闭“查找与替换”框,按Delete,可以删除全部分节符。但是此时,表格会自动合并起来了,这不是所需要的。
查找delete
查找替换起作用的条件
日常工作中会发现,对分节符的查找替换有时候可行,有时候不可行,到底是怎么回事呢?认真观察,会发现当分节符后不是紧邻表格时,也就是分节符和表格之间存在一些字符(字母汉字或段落标志等)时,那么查找替换是起作用的。如下图所示的情形,就可以被替换。分节符与后一个表格间存在一个段落标志,此时查找替换是起作用的。但不清楚本质的原因是什么。
分节符与表格间有段落标志
分节符的一些特性分节符可以作为一个段落的结束。一般word中段落的结束都是段落标志,即左捌的箭头符号。其时分节符也可以代表一个段落的结束。 认真观察可以发现,与分节符有类似作用的分页符或分栏符就不能作为一个段落的结束,插入一个分页符或分栏符,它后面一定跟着一个段落标志。 当一个分节符后紧邻着表格时,想要在其间批量插入字符是困难的,因为插入的字符会直接进入到表格里面,成为表格的一部分,这不是所期望的结果。
Vba代码实现批量替换通过vba代码可以实现分节符批量替换为段落标志。先找到末尾为分节符的段落,然后在分节符前插入一个段落标志,最后删除分节符。代码如下。
Sub 表格间分节符替换为段落标志()
Dim oPara As Paragraph, i As Long
Application.ScreenUpdating = False
For Each oPara In ActiveDocument.Paragraphs
If oPara.Range Like "*" & Chr(12) Then '判断末尾为分节符的段落
oPara.Range.Characters.Last.InsertParagraphBefore '在分节符前插入一个段落标志
oPara.Range.Characters.Last.Delete '删除分节符
i = i + 1 '计数器
End If
Next oPara
MsgBox "已替换" & i & "个表格间分节符为段落标志"
Application.ScreenUpdating = True
End Sub
代码参考了413191246se的帖子,参考链接如下。在此感谢大神!
http://club.excelhome.net/thread-1082285-1-1.html
补充内容 (2019-1-16 10:04):
这种情形的关键之处在于分节符后紧跟着表格,没有其他字符分隔。而分节符之前是否紧跟着表格不并影响什么。 |