ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 删除标点符号前后的空格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-10-8 11:44 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
删除文档空格的代码很多,但几乎都是全文删除空格,在实践中,为了整齐美观,很多空格是要保留的,如下:
组 长:张 三
副组长:李老四 王 二
成 员:赵 五 孙小六
还有:
主 任:张 三
副主任:李老四 王 二
委 员:赵 五 孙小六
……等等
从网上复制、粘贴文档后,发现有的网络在段落内换行时,为了整齐,在层次结构序号后、标点符号前后自动添加半角空格:
一、 ……(顿号后有一半角空格)
(一) ……(反括号后有一半角空格)
1. ……(圆点后有一半角空格)
(1) ……(反括号后有一半角空格)
以及所有的的中文标点符号前后都可能存在一半角空格。
一个一个地或前或后查找替换效率很低,是否有一种方法一次性地删除。现向大师请教:
快速删除圆点前后、常用中文标点符号……()、“”,。?!《》前后空格的VBA。
谢谢

TA的精华主题

TA的得分主题

发表于 2019-10-9 02:24 | 显示全部楼层
楼主,一般可以删除所有空格。像名单,我有名单宏;其它的适当可以手动排版一下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-10-9 19:52 | 显示全部楼层
413191246se 发表于 2019-10-9 02:24
楼主,一般可以删除所有空格。像名单,我有名单宏;其它的适当可以手动排版一下。

413191246se兄,谢谢指教

TA的精华主题

TA的得分主题

发表于 2019-10-10 16:44 | 显示全部楼层
你好!
式一下这个行不!

Sub 删标点符号前后空格()
    With ActiveDocument.Content.Find
        .Execute " ([……()、“”,:。?!《》]) ", , , 1,, , , , , "\1", 2
    End With
EndSub

TA的精华主题

TA的得分主题

发表于 2019-10-10 20:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
受 相见 感召,我费心给 楼主 编辑了一个宏,可以试试:
  1. Sub 删除标点符号前后空格()
  2. '如有遗漏标点符号,请酌情自行添加到下面两行代码的中括号中(但要注意:有的可能需要先加一个斜杠“\”再加入;如加入后变红色,就不要加入)
  3.     ActiveDocument.Content.Find.Execute "[  ^s^t]{1,}([.、,。:;?!“”‘’'…―·,.:;\?\!々ˇ¨ˉ〃‖\(\)()《》〈〉\[\]〔〕{}{}[]〖〗【】『』「」`|£¥¢~])", , , 1, , , , , , "\1", 2
  4.     ActiveDocument.Content.Find.Execute "([.、,。:;?!“”‘’'…―·,.:;\?\!々ˇ¨ˉ〃‖\(\)()《》〈〉\[\]〔〕{}{}[]〖〗【】『』「」`|£¥¢~])[  ^s^t]{1,}", , , 1, , , , , , "\1", 2
  5. End Sub
复制代码

***如果一般情况下,要删除所有空格,或删除选定范围内的空格,可试用下面的宏:
  1. Sub 删除所有空格aaaa()
  2. '更新/2019-8-15/定稿
  3.     With Selection
  4.         If .Type = wdSelectionIP Then .WholeStory
  5.         With .Find
  6.             .ClearFormatting
  7.             .Replacement.ClearFormatting
  8.             .Execute "^w", , , 0, , , , , , "", 2
  9.             .Execute " ", , , 0, , , , , , "", 2
  10.         End With
  11.     End With
  12. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-10-10 22:56 | 显示全部楼层
相见是缘8 发表于 2019-10-10 16:44
你好!式一下这个行不!
Sub 删标点符号前后空格()    With ActiveDocument.Content.Find        .Execute ...

相见是缘8兄,谢谢您!试了一下,发现这句.Execute " ([……()、“”,:。?!《》]) ", , , 1,, , , , , "\1", 2只能删除标点符号前后都有有空格的,变成:先删除前面有空格的.Execute " ([……()、“”,:。?!《》])", , , 1, , , , , , "\1", 2,再删除后后面有空格的.Execute "([……()、“”,:。?!《》]) ", , , 1, , , , , , "\1", 2,即:
Sub 删标点符号前后空格()
    With ActiveDocument.Content.Find
        .Execute " ([……()、“”,:。?!《》])", , , 1, , , , , , "\1", 2
    End With
    With ActiveDocument.Content.Find
        .Execute "([……()、“”,:。?!《》]) ", , , 1, , , , , , "\1", 2
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2019-10-11 07:59 | 显示全部楼层
413191246se 发表于 2019-10-10 20:35
受 相见 感召,我费心给 楼主 编辑了一个宏,可以试试:

***如果一般情况下,要删除所有空格,或删除选 ...

老师好!
哈哈!老师你忘了,我这个代码还是从你那儿学来的。

TA的精华主题

TA的得分主题

发表于 2019-10-11 08:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 相见是缘8 于 2019-10-11 08:18 编辑
ke3088 发表于 2019-10-10 22:56
相见是缘8兄,谢谢您!试了一下,发现这句.Execute " ([……()、“”,:。?!《》]) ", , , 1,, , ,  ...
你好!
由于你未提供“测试附件”,我理解错了,以为你是要删除标点符号前后都有空格的。不管怎样能帮到你就好!


TA的精华主题

TA的得分主题

发表于 2019-10-11 09:27 | 显示全部楼层
本帖最后由 loquat 于 2019-10-11 09:35 编辑

查找替换:
查找:[ ]{1,}([…()、“”,。?!《》]@)[ ]{1,}
勾选使用通配符
替换:\1
点击全部替换
注意红色部分,中括号里,如果要加小括号或者中括号作为匹配标点符号
就需要用到转义字符\
\[代表[
\(代表(

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-10-11 10:13 | 显示全部楼层
谢谢各位老师的倾力相助!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 17:34 , Processed in 0.047311 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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