ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 删除多余空白段和插入空白段的VBA

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-6 00:56 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ke3088 于 2019-5-6 00:59 编辑

处理前:
1.png

处理后的效果:

2.png
处理前:

3.png

处理后的效果:

2.png

向各位大师求助以下循环代码:
1.第一节最后段(即段前二字为“出席”)与正文之间空白段落(行)在2个以上的,保留1个空白段落,其他删除;
2.最后段与正文之间没有空白段落的,插入1个空白段落。
一行一行的往上找效率太慢了,谢谢!
返回一节的代码已解决:
Sub 一节末段首()
    If ActiveDocument.Sections.Count > 1 Then
       n = 2
    Else
       n = 1
    End If
    Dim ccdoc As Document, rng As Range
    Set ccdoc = ActiveDocument
    With ccdoc.Sections(1)
         Set rng = ccdoc.Range(.Range.End - n, .Range.End - n)
         rng.Select
    End With
    With Selection
         ActiveDocument.Range(.Paragraphs(1).Range.Start, .Paragraphs(1).Range.Start).Select
    End With
End Sub


TA的精华主题

TA的得分主题

发表于 2019-5-7 00:43 | 显示全部楼层
楼主,我有两个小宏test1/test2,虽然功能一样,但test1是极简的!请试用:
  1. Sub test1()
  2.     ActiveDocument.Content.Find.Execute "[^13^11  ^s^t]@(出席:)", , , 1, , , , , , "^p^p\1", 2
  3. End Sub
  4. Sub test2()
  5.     With ActiveDocument
  6.         '回车符/手动换行符=>段落标记
  7.         .Content.Find.Execute "[^13^11]", , , 1, , , , , , "^p", 2
  8.         .Select
  9.         CommandBars.FindControl(ID:=122).Execute
  10.         CommandBars.FindControl(ID:=123).Execute

  11.         '删除空行
  12.         Dim i As Paragraph
  13.         For Each i In .Paragraphs
  14.             If Asc(i.Range) = 13 Then i.Range.Delete
  15.         Next

  16.         '插入空行
  17.         With .Content.Find
  18.             .ClearFormatting
  19.             .Text = "^13出席:"
  20.             .Forward = True
  21.             .MatchWildcards = True
  22.             Do While .Execute
  23.                 With .Parent
  24.                     .InsertParagraphBefore
  25.                     .Start = .End
  26.                 End With
  27.             Loop
  28.         End With
  29.         .Range(0, 0).Select
  30.     End With
  31. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-7 13:29 | 显示全部楼层
413191246se 发表于 2019-5-7 00:43
楼主,我有两个小宏test1/test2,虽然功能一样,但test1是极简的!请试用:

413191246se老师,谢谢您。稍后有空试试

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-26 22:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se老师,由于前段时间比较忙,一直没有运用您的代码,今天才试用,ActiveDocument.Content.Find.Execute "[^13^11  ^s^t]@(出席:)", , , 1, , , , , , "^p^p\1", 2,这一句特别好用,就是我想要的效果,再次衷心感谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 23:41 , Processed in 0.034620 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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