ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 删除文档最后一个字符,后面的空格与回车(即无意义的空格和回车)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-1-22 10:01 | 显示全部楼层 |阅读模式
删除文档最后一个字符,后面的空格与回车(即无意义的空格和回车)

如图删除选定区域
用VBA实现
请老师们帮帮忙,谢谢大家了!
删除文档最后一个字符,后面的空格与回车(即无意义的空格和回车).rar (2.36 KB, 下载次数: 8)
无标题.jpg

TA的精华主题

TA的得分主题

发表于 2015-1-22 10:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 删除段落首尾空格及空行()

    With ActiveDocument.Content.Find

        .Execute findtext:="^l", replacewith:="^p", Replace:=wdReplaceAll

        .Execute findtext:="^13", replacewith:="^p", Replace:=wdReplaceAll

        .Execute findtext:="(", replacewith:="(", Replace:=wdReplaceAll

        .Execute findtext:=")", replacewith:=")", Replace:=wdReplaceAll

    End With

    SendKeys "^(aej)", True

    Dim i As Paragraph

    For Each i In ActiveDocument.Paragraphs

        If Len(i.Range) = 1 Then i.Range.Delete

    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2015-1-22 10:21 | 显示全部楼层

供参考

  1. Sub 删除空白段落()
  2.     Dim i As Paragraph, n As Integer
  3.     Application.ScreenUpdating = False
  4.     For Each i In ActiveDocument.Paragraphs
  5.         If Len(i.Range) = 1 Then
  6.             i.Range.Delete
  7.             n = n + 1
  8.         End If
  9.     Next
  10.     MsgBox "共删除空白段落" & n & "个"
  11.     Application.ScreenUpdating = True
  12. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-22 11:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wshcw 发表于 2015-1-22 10:18
Sub 删除段落首尾空格及空行()

    With ActiveDocument.Content.Find

谢谢老师
这个代码很好

但我想实现的是:删除文档最后的空行、和空格,文档中间的不删除

再请老师斧正下,谢谢老师了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-22 11:12 | 显示全部楼层
huanglicheng 发表于 2015-1-22 10:21
供参考

谢谢老师
这个代码很好

但我想实现的是:删除文档最后的空行、和空格,文档中间的不删除

再请老师斧正下,谢谢老师了!

TA的精华主题

TA的得分主题

发表于 2015-1-22 11:32 | 显示全部楼层
学习VS交流 发表于 2015-1-22 11:12
谢谢老师
这个代码很好
  1. Sub 删除最后空白段落()

  2.     Dim i&, iCount&, arr
  3.     arr = Split(ActiveDocument.Range.Text, Chr(13))

  4.     Application.ScreenUpdating = False
  5.     With ActiveDocument.Paragraphs
  6.         iCount = UBound(arr)
  7.         For i = iCount - 1 To 0 Step -1
  8.             If Len(Trim(arr(i))) = 0 Then
  9.                 .Item(i + 1).Range.Delete
  10.             Else
  11.                 .Item(i + 1).Range.Text = Trim(arr(i))
  12.                 Exit For
  13.             End If
  14.         Next i
  15.     End With
  16.     Application.ScreenUpdating = True
  17.    
  18. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-22 11:54 | 显示全部楼层
huanglicheng 发表于 2015-1-22 11:32

非常感谢老师,达到了效果了。

老师如果改成,删除文档第一个字符前,所有的空格、及空行,怎么改呀,再麻烦下老师了!

TA的精华主题

TA的得分主题

发表于 2015-1-22 19:35 | 显示全部楼层
狂晕!楼主,前几天你这个问题,我已经给出了解答代码,你怎么还问啊!?(见你其它帖子)

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-22 21:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
413191246se 发表于 2015-1-22 19:35
狂晕!楼主,前几天你这个问题,我已经给出了解答代码,你怎么还问啊!?(见你其它帖子)

哦,谢谢老师了!

TA的精华主题

TA的得分主题

发表于 2015-1-22 21:33 | 显示全部楼层
本帖最后由 loquat 于 2015-1-22 22:34 编辑
  1. Private Function myRegExp(ByVal str$, ByVal aPattern$) As String
  2. With CreateObject("Vbscript.RegExp")
  3.     .Global = True
  4.     .Pattern = aPattern
  5.     myRegExp = .Replace(str, "")
  6. End With
  7. End Function

  8. Sub 删除尾部空行()
  9. Application.ScreenUpdating = False  '关闭屏幕刷新,成倍提高效率
  10. Dim aCount&, i&, skipChars$
  11. skipChars = "[ ^13]"  '这里自己定义无意义的字符列表,上面包括硬回车、半角空格
  12. With ActiveDocument    '压栈,提高一定效率
  13.     aCount = .Paragraphs.count   '避免循环节中每次都读取对象,提高一定效率
  14.     For i = aCount To 1 Step -1  '段落从后往前循环
  15.         If myRegExp(.Paragraphs(i).Range.Text, skipChars) <> "" Then Exit For '只有一次对象读取,不定义变量
  16.             '段落字符不是回车符时退出循环,i为最后一个有字符的段落号
  17.     Next
  18.     .Range(.Paragraphs(i).Range.End, .Content.End).Delete  '删除段落i的末尾到文档的末尾范围。减少对象删除次数。
  19. End With  '出栈,释放内存
  20. Application.ScreenUpdating = True  '恢复屏幕刷新
  21. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-16 10:58 , Processed in 0.026585 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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