ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3269|回复: 6

[原创] word表格间的分节符无法批量替换

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-1-12 11:24 | 显示全部楼层 |阅读模式
本帖最后由 chendeyan126 于 2019-1-12 12:05 编辑
[ 本帖最后由 chendeyan126 于 2019-1-12 11:53 编辑 ]\n\n
通过邮件合并创建的,或者从其他软件转换过来的长文档,可能会存在大量分节符邻表格的情况,如下图所示。分节符与上下表格间没有任何字符,也没有其他任何非打印编辑标志,如段落标志等。出于某种需求,希望把分节符批量替换为段落标志。

分节符紧邻表格

分节符紧邻表格
全部替换失败
很容易想到使用“查找和替换”功能进行批量替换,在查找框输入^m,在替换框输入^p,勾选“使用通配符”,如下图所示。点击“全部替换”后,发现替换失败。把替换框换为其他内容,如^p^&,也是失败的。可以查找到它,就是不能替换。

查找替换

查找替换

查找全部后Delete
既然可以查找到分节符,那么我们一次性选中全部分节符,然后删除。如下图所示,在“查找”选项卡下,在“查找内容”中输入“^b”,然后在“在以下项中查找”选择“主文档”,所有分节符即可被选中。关闭“查找与替换”框,按Delete,可以删除全部分节符。但是此时,表格会自动合并起来了,这不是所需要的。

查找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):
这种情形的关键之处在于分节符后紧跟着表格,没有其他字符分隔。而分节符之前是否紧跟着表格不并影响什么。

TA的精华主题

TA的得分主题

发表于 2019-1-13 18:45 来自手机 | 显示全部楼层
全部替换过程中,不勾选通配符试试。用手机回复,未检验。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-14 09:20 | 显示全部楼层
wdpfox 发表于 2019-1-13 18:45
全部替换过程中,不勾选通配符试试。用手机回复,未检验。

你试过就知道不行了。

TA的精华主题

TA的得分主题

发表于 2019-1-15 10:56 | 显示全部楼层
chendeyan126 发表于 2019-1-14 09:20
你试过就知道不行了。

今天试过,word2016完全没有问题! gaollg0.rar (1.75 MB, 下载次数: 2)

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-16 10:08 | 显示全部楼层
wdpfox 发表于 2019-1-15 10:56
今天试过,word2016完全没有问题!

感谢你的回复!
可能你没有理解我说的这种情况。它的关键之处在于分节符之后紧跟着表格,它们之间没有其他字符分隔。下面是一个示例文件,你可以再试试。
新建 Microsoft Word 文档.zip (17.95 KB, 下载次数: 7)

TA的精华主题

TA的得分主题

发表于 2019-11-26 16:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个代码解决我长时间以来的一个痛点!

TA的精华主题

TA的得分主题

发表于 2019-11-27 18:40 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个代码特别好,请问可以把分节符直接换成分页符吗?我有很多表格,每个都插有分节符,直接查找替换无效,我想一次性把分节符改成分页符而不打乱原文结构
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-11 00:53 , Processed in 0.027081 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表