ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 「求助」Word VBA如何实现部分分段符号的替换呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-2-15 14:58 | 显示全部楼层 |阅读模式
image.jpg image.jpg
如上图,从PDF复制内容到Word文档上后,就会出现大量不需要的分段,需要进行删减,但并不是全文删减;
目前我的做法是「Ctrl+H」对选中的段落进行「^p→(空)」的替换,但每次都这样操作,处理多段落和多文档时就很繁琐了。
我尝试过用宏录制,把上述步骤录下来,但结果是整篇或者下方段落的分段符全被删除,不知道如何处理--
请各位路过高手大神指出一条明路,感谢


原代码:
Sub 宏2()
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
image.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-2-15 15:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
问题已经解决了,翻了好久,翻到了13年前的一个老贴,当时有一位大神给出了完美答复(懂VBA真的太强了,也不用安装什么插件、软件之类的);
大神为:tangqingfu,再次感谢,代码如下:
Sub 批量删除空行及合并断行()
'注意不要选中标题行(或如选中替换后应对标题行进行重新排版)
Dim myRange As Range, myend As Long
'如果没有选定区域则作全文档处理
Set myRange = IIf(Selection.Type = wdSelectionIP, ActiveDocument.Content, Selection.Range)
myend = myRange.End  '取得待区域的结束位置
With myRange.Find
    .ClearFormatting '清除查找框格式
    .Replacement.ClearFormatting '清除替换框格式
    .MatchWildcards = True
    .Text = "([!。:……?!”.:…\.\?\!\))])[^13^l]{1,}"
    .Execute replacewith:="\1", Replace:=wdReplaceAll
End With
End Sub

TA的精华主题

TA的得分主题

发表于 2022-2-16 14:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
可以不用VBA,查找:([!。:……?!)])^13{1,},替换为\1

TA的精华主题

TA的得分主题

发表于 2022-2-16 19:50 来自手机 | 显示全部楼层
本帖最后由 wdpfox 于 2022-2-16 19:56 编辑

要用VBA,否则会把有的标题给无差别处理了

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-2-17 10:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
limonet 发表于 2022-2-16 14:35
可以不用VBA,查找:([!。:……?!)])^13{1,},替换为\1

嗯,感谢,用VBA的好处主要是针对特定区域完成替换,放到快速访问工具栏上就可以点一下完成替换

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-2-17 10:17 | 显示全部楼层
wdpfox 发表于 2022-2-16 19:50
要用VBA,否则会把有的标题给无差别处理了

是的,而且把宏放到快捷栏上,效果非常好;
这段代码绝对是论文、研报等常用PDF者的福音,能用后效率提高得实在太爽了!
身边就没人会这方法,甚至大部分人连替换^p为空的操作也不知道,只能一个段段删。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 07:58 , Processed in 0.044646 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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