ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 把超过一行的段落前后(段首、段尾)增加一个段落符

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-8-18 10:55 | 显示全部楼层 |阅读模式
本帖最后由 13907933959 于 2017-8-18 10:57 编辑

前辈们好!
求前辈帮忙,把超过一行的段落前后(段首、段尾)增加一个段落符,未满行或刚满行的段落则不增加。
谢谢!

模拟附件.rar

5.85 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2017-8-18 12:26 | 显示全部楼层
Sub AddVbcr()
    Dim d As Document
    Set d = ActiveDocument
    For i = d.Paragraphs.Count To 1 Step -1
        If d.Paragraphs(i).Range.ComputeStatistics(1) > 1 Then
            d.Paragraphs(i).Range.InsertAfter vbCr
            d.Paragraphs(i).Range.InsertBefore vbCr
        End If
    Next
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-19 07:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 13907933959 于 2017-8-19 16:07 编辑
duquancai 发表于 2017-8-18 12:26
Sub AddVbcr()
    Dim d As Document
    Set d = ActiveDocument

前辈好!
有难题总能得到前辈的相助,心里感激!!!
刚才在 “模拟附件” 上测试了,代码精准,后又在比较大(3MB)的单个文档上测试,处理28分钟左右,文档还没处理完电脑死机,试了3遍都一样,这个可能是电脑的配置跟不上,前辈有不有办法让它处理的速度变得快一些?因我处理的大文档比较多,在下拜谢!

TA的精华主题

TA的得分主题

发表于 2017-8-19 07:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
13907933959 发表于 2017-8-19 07:05
社前辈好!
有难题总能得到前辈的相助,心里感激!!!
刚才在 “模拟附件” 上测试了,代码精准,后又 ...

哈,兄弟,你好换电脑了…………。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-19 08:38 | 显示全部楼层
本帖最后由 13907933959 于 2017-8-19 09:46 编辑
jiminyanyan 发表于 2017-8-19 07:46
哈,兄弟,你好换电脑了…………。

前辈好!
电脑是好的,平时也够用,再说经济也不富裕

TA的精华主题

TA的得分主题

发表于 2017-8-19 10:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2017-8-18 12:26
Sub AddVbcr()
    Dim d As Document
    Set d = ActiveDocument

判断行数............................................................................................................

TA的精华主题

TA的得分主题

发表于 2017-8-19 10:56 | 显示全部楼层
本帖最后由 duquancai 于 2017-8-19 12:35 编辑
13907933959 发表于 2017-8-19 07:05
社前辈好!
有难题总能得到前辈的相助,心里感激!!!
刚才在 “模拟附件” 上测试了,代码精准,后又 ...


Sub AddVbcr()
    Dim mts As Object, reg As Object, n&, m&, chanum&, doc As Document
    Set doc = ActiveDocument: chanum = doc.PageSetup.CharsLine
    Set reg = CreateObject("vbscript.regexp")
    reg.Global = True: reg.MultiLine = True
    reg.Pattern = "^[^\r]{" & chanum & ",}\r"
    Set mts = reg.Execute(doc.Content.Text)
    If Not mts Is Nothing Then
        For j = mts.Count - 1 To 0 Step -1
            m = mts(j).FirstIndex: n = mts(j).Length
            With doc.Range(m, m + n)
                If .ComputeStatistics(1) > 1 Then
                    .InsertAfter vbCr
                    .InsertBefore vbCr
                End If
            End With
        Next
    End If
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-19 15:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 13907933959 于 2017-8-19 16:07 编辑
duquancai 发表于 2017-8-19 10:56
Sub AddVbcr()
    Dim mts As Object, reg As Object, n&, m&, chanum&, doc As Document
    Set d ...

前辈好!
这个代码较上一个代码速度可能快了一半左右,刚才在上午3MB的单个文档上测试了,耗时 16分半钟左右处理完毕,代码同样精准无误,电脑也没有出现死机现象。前辈辛苦了!拜谢前辈!

TA的精华主题

TA的得分主题

发表于 2017-8-19 15:36 | 显示全部楼层
13907933959 发表于 2017-8-19 15:31
社前辈好!
这个代码较上一个代码速度可能快了一半左右,刚才在上午3MB的单个文档上测试了,耗时 16分半 ...

哈哈,是杜前辈,不是社……。

TA的精华主题

TA的得分主题

发表于 2017-8-19 15:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
13907933959 发表于 2017-8-19 15:31
社前辈好!
这个代码较上一个代码速度可能快了一半左右,刚才在上午3MB的单个文档上测试了,耗时 16分半 ...

16分钟左右!!!90年代的电脑吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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