ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 删除段落首尾空格没有效果

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-4-20 19:51 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 weiyingde 于 2017-4-20 20:01 编辑

求句word替换法代码:删除段落首位空格
我这样写,没有效果:
ActiveDocument.Content.Find.Execute "([!^13]@)^32{1,}(^13)", , , 1, , , , , , "\1\3", 2 '删去段尾的空格。
ActiveDocument.Content.Find.Execute "^32{1,}([!^13]@)(^13)", , , 1, , , , , , "\2\3", 2 '删去段首的空格。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-20 20:00 | 显示全部楼层
自我解决了
Sub 删除段落首位空格没有效果()
ActiveDocument.Content.Find.Execute "([!^13]@)^32{1,}(^13)", , , 1, , , , , , "\1\2", 2 '删去段尾的空格。
ActiveDocument.Content.Find.Execute "(^32{1,})([!^13]@)(^13)", , , 1, , , , , , "\2\3", 2 '删去段首的空格
End Sub

TA的精华主题

TA的得分主题

发表于 2017-4-20 20:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub shishi()
    Dim reg As Object, doc As Document
    Set doc = ActiveDocument
    Set reg = CreateObject("vbscript.regexp")
    reg.Global = True: reg.MultiLine = True
    reg.Pattern = "^[\xa0\s\u3000]+|[\xa0\s\u3000]+$"
    doc.Content = reg.Replace(doc.Content, "")
End Sub

TA的精华主题

TA的得分主题

发表于 2017-4-20 20:52 | 显示全部楼层
weiyingde 发表于 2017-4-20 20:00
自我解决了
Sub 删除段落首位空格没有效果()
ActiveDocument.Content.Find.Execute "([!^13]@)^32{1,}(^1 ...

用你的代码试试这个文档》》》》》

123.rar

10.91 KB, 下载次数: 20

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-20 22:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2017-4-20 20:52
用你的代码试试这个文档》》》》》

是的,没有效果,我的代码是:
Sub 删除段落首位空格没有效果()
SendKeys "^(ael)"
SendKeys "{Enter}"
With ActiveDocument
  With .Content.Find
     '  .Execute "([!^13]@)^32{1,}(^13)", , , 1, , , , , , "\1\2", 2 '删去段尾的空格。
    ' .Execute "(^32{1,})([!^13]@)(^13)", , , 1, , , , , , "\2\3", 2 '删去段首的空格
     .Execute "([!一-隝^1-^127])([^32]{1,})(*)", , , 1, , , , , , "\1\3", 2
       .Execute "([!一-隝^1-^127])([^32]{1,})([!^32]@)", , , 1, , , , , , "\1\3", 2
       .Execute "([!^32]@)([^32]{1,})([!一-隝^1-^127])", , , 1, , , , , , "\1\3", 2
  End With
  For i = 1 To .Paragraphs(.Paragraphs.Count)
      .Paragraphs(i).Format.CharacterUnitLeftIndent = 2
  Next
End With
End Sub
改了一下,却只能删除段前段后的空格,而中间的空格却安然无恙。
这到底是什么回事,愿听杜老师讲解。
如果继续用查找替换法,该怎样写代码?
期待指点,谢谢!!

TA的精华主题

TA的得分主题

发表于 2017-4-20 22:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 duquancai 于 2017-4-20 22:43 编辑
weiyingde 发表于 2017-4-20 22:34
是的,没有效果,我的代码是:
Sub 删除段落首位空格没有效果()
SendKeys "^(ael)"

Sub del_段首段尾空白()
    Dim p As Range, doc As Document
    Set doc = ActiveDocument
    doc.Content.Find.Execute "^11", , , 1, , , , , , "^p", 2
    Set p = doc.Paragraphs(1).Range
    With p
        .Collapse: .MoveEnd , 1
        If .Find.Execute("^w") Then
            doc.Paragraphs(1).Range.Find.Execute "^w", , , , , , , 0, , "", 1
        End If
    End With
    doc.Content.Find.Execute "^p^w", , , , , , , , , "^p", 2
    doc.Content.Find.Execute "^w^p", , , , , , , , , "^p", 2
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-20 22:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2017-4-20 22:37
Sub del_段首段尾空白()
    Dim p As Range, doc As Document
    Set doc = ActiveDocument

中间的空格还是不能删去,能完善一下吗?

TA的精华主题

TA的得分主题

发表于 2017-4-20 22:42 | 显示全部楼层
weiyingde 发表于 2017-4-20 22:40
中间的空格还是不能删去,能完善一下吗?

中间本来就不要删除,只是删除 段首和段尾的

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-20 22:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
而且,
For i = 1 To .Paragraphs(.Paragraphs.Count)
      .Paragraphs(i).Format.CharacterUnitLeftIndent = 2
  Next
也不能起作用。

TA的精华主题

TA的得分主题

发表于 2017-4-20 22:51 来自手机 | 显示全部楼层
weiyingde 发表于 2017-4-20 22:42
而且,
For i = 1 To .Paragraphs(.Paragraphs.Count)
      .Paragraphs(i).Format.CharacterUnitLeftIn ...

对于缩进,并非本题研究的范围。只是删除段首和段尾的空白区域。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 19:08 , Processed in 0.024560 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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