ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] WORD中选择最后一个字符至最后一个回车符号的VBA代码。怎么写。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-1-20 17:09 | 显示全部楼层 |阅读模式
WORD中选择最后一个字符至最后一个回车符号的VBA代码。怎么写。

如图:请高手老师们写个这样的代码,谢谢老师们了!
WORD中选择最后一个字符至最后一个回车符号的VBA代码。怎么写。.rar (3.22 KB, 下载次数: 13)
1.jpg


TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-20 23:06 | 显示全部楼层
请老师们帮帮忙!谢谢大家了!

TA的精华主题

TA的得分主题

发表于 2015-1-20 23:23 | 显示全部楼层
'删除空行
    Dim i As Paragraph
    For Each i In ActiveDocument.Paragraphs
        If Len(i.Range) = 1 Then i.Range.Delete
    Next

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-20 23:57 | 显示全部楼层
413191246se 发表于 2015-1-20 23:23
'删除空行
    Dim i As Paragraph
    For Each i In ActiveDocument.Paragraphs

老师你好,我只是想删除,文档最后的空和

文档中间的空行,不删除!

TA的精华主题

TA的得分主题

发表于 2015-1-21 00:26 | 显示全部楼层
明白了!楼主,我觉得你的要求似乎没有必要用代码,批量处理还是要删除全部空行的再排版,但也给你提供一下解决代码:
Sub test()
    Do
        ActiveDocument.Paragraphs.Last.Range.Select
        CommandBars.FindControl(ID:=122).Execute
        CommandBars.FindControl(ID:=123).Execute
        If Len(Selection) = 1 Then Selection.Delete Else Exit Do
    Loop

'下面是上面语句的解释:
'    Do '循环语句开始
'        ActiveDocument.Paragraphs.Last.Range.Select '选择当前文档最后一段
'        CommandBars.FindControl(ID:=122).Execute '两端对齐
'        CommandBars.FindControl(ID:=123).Execute '居中
'        If Len(Selection) = 1 Then Selection.Delete Else Exit Do '如果字长为1,则只有一个字符,就是回车符,删除!否则退出循环
'    Loop '循环语句结束
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-21 22:25 | 显示全部楼层
413191246se 发表于 2015-1-21 00:26
明白了!楼主,我觉得你的要求似乎没有必要用代码,批量处理还是要删除全部空行的再排版,但也给你提供一下 ...

朋友你好!
上面的代码,今天发现还是没有实现我的目的
我的目的是,这样的
VBA代码快速删除文档最后一个字符后(文档中间的要保留)所有的空格、空行请老师帮我写个这样的代码,谢谢老师了!

另外老师帮我回复的其它几个帖子,我还没有回复老师,我看到了,由于这几天出差。
没有及时回复,还请老师你海凼。

TA的精华主题

TA的得分主题

发表于 2015-1-23 16:15 | 显示全部楼层
学习VS交流 发表于 2015-1-23 10:49
老师这个完美了

如果是删除文档开始第一个字符前的空格和空白段落


可以吐槽一下吧?
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃.

以下代码未经严苛测试:

Sub DeleteStartEndBlankCharacters()
''''功能:删除文档开始和结尾位置的空白段落和空格
    Dim astrFindText(1 To 2) As String
    Dim astrReplaceText(1 To 2) As String
    Dim I As Integer
    ''''查找连续的空白段落,半角空格,全角空格,不连续空格
    astrFindText(1) = "^28[^13^32" & ChrW$(160) & ChrW$(12288) & "]@([!^13^32" & ChrW$(160) & ChrW$(12288) & "])"
    astrFindText(2) = "[^13^32" & ChrW$(160) & ChrW$(12288) & "]@^8"
    astrReplaceText(1) = "\1"
    astrReplaceText(2) = Empty
    Application.ScreenUpdating = False ''''关闭屏幕更新
    With ActiveDocument.Content
        .InsertBefore Chr$(28) & Chr$(13)    ''''文档起始位置之前插入辅助字符
        .InsertAfter Chr$(13) & Chr$(8)    ''''文档结束标记之前插入辅助字符
        For I = 1 To 2
            With .Find
                .ClearFormatting    ''''清除查找格式
                ''''如有需要其他空白字符,请自行添加
                .Text = astrFindText(I)
                .Wrap = wdFindStop    ''''完成搜索后即结束
                .Forward = True    ''''正向查找
                .MatchWildcards = True    ''''使用通配符
                .Replacement.ClearFormatting    ''''清除替换格式
                .Replacement.Text = astrReplaceText(I)
                .Execute Replace:=wdReplaceAll    ''''全部替换
            End With
        Next
    End With
    Application.ScreenUpdating = True ''''恢复屏幕更新
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-1-22 19:39 | 显示全部楼层
楼主,我5楼的代码,你重新试用一下,看看是否真的没管事。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-22 20:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
413191246se 发表于 2015-1-22 19:39
楼主,我5楼的代码,你重新试用一下,看看是否真的没管事。

不明白了,昨天晚上测试时,出现过代码没有管事的现象

现在测试又能起作用了。

是不是我操作问题呀!不明白了!!!

感谢老师了!

TA的精华主题

TA的得分主题

发表于 2015-1-22 21:17 | 显示全部楼层
本帖最后由 loquat 于 2015-1-22 21:32 编辑
  1. Sub 删除尾部空行()
  2. Application.ScreenUpdating = False  '关闭屏幕刷新,成倍提高效率
  3. Dim aCount&, i&
  4. With ActiveDocument    '压栈,提高一定效率
  5.     aCount = .Paragraphs.count   '避免循环节中每次都读取对象,提高一定效率
  6.     For i = aCount To 1 Step -1  '段落从后往前循环
  7.         If .Paragraphs(i).Range.Text <> Chr(13) Then Exit For  '只有一次对象读取,不定义变量
  8.             '段落字符不是回车符时退出循环,i为最后一个有字符的段落号
  9.     Next
  10.     .Range(.Paragraphs(i).Range.End, .Content.End).Delete  '删除段落i的末尾到文档的末尾范围。减少对象删除次数。
  11. End With  '出栈,释放内存
  12. Application.ScreenUpdating = True  '恢复屏幕刷新
  13. End Sub
复制代码
以上思路只是在批量编辑时可能会效率比较明显,单个文件5楼是最好的代码。。。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 13:36 , Processed in 0.035594 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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