+ -
当前位置:首页 → 问答吧 → [分享]空白段落的删除问题

[分享]空白段落的删除问题

时间:2003-09-21

来源:互联网

昨天朋友托我将长达89页的下载文档进行打印,为节约起见,需将许多空白段落删除,以前一直以为用^P的替换非常方便,一试方知不然。只好用VBA做了一个删除空行的小模块,与大家共享。Sub blankdel()Dim i As IntegerFor i = ActiveDocument.Paragraphs.Count To 1 Step -1ActiveDocument.Paragraphs(i).Range.Selecta = Selection.Words.CountIf a = 1 ThenSelection.Deletem = m + 1End IfNext iMsgBox "共删除空白段落" & m & "个"End Sub

作者: 守柔   发布时间: 2003-09-21

我不懂VB,从您发表的帖子来看,应是个高手。特地向守柔请教,怎样学VB?应该有什么基础?

作者: jls   发布时间: 2003-09-21

只要你继续坚持在论坛上学习,只要你不断地深化WORD与EXCEL,然后你会发现很多问题,通过主程序无法解决,或者难度很大,或者很繁。你开始思考其它途径,开始接触VBA,开始学习VBA,开始试着做一些小的代码。我也一样,也没什么基础,根本谈不上高手,只是兴趣,它是引导一个人最好的进步力量。等你回过头来,看看自己在论坛中的成长历程,你会发现自己的成果所在,并非仅仅局限于几颗星。你可以先从宏入手,看一下,你所录的宏,其代码究竟是什么,能否修改得更好?……

作者: 守柔   发布时间: 2003-09-22

我正在学习应用宏,看来这一步走对了。谢谢守柔,希望只要本坛存在,就能经经常看到您。同时向您发出来自滇西北云岭深处的问候。

作者: jls   发布时间: 2003-09-22

引用:
以下是引用jls在2003-9-22 19:08:00的发言:我正在学习应用宏,看来这一步走对了。谢谢守柔,希望只要本坛存在,就能经经常看到您。同时向您发出来自滇西北云岭深处的问候。
谢谢jls,你我的学习之路,路漫漫兮唯修远,吾们均将上下而求索。摘了一个小程序(源自七叶一枝梅,并略作修饰与包装),空时可消磨。 EP7dR222.rar (6.03 KB)
EP7dR222.rar (6.03 KB)
[分享]空白段落的删除问题
下载次数: 324
2003-9-23 05:34

作者: 守柔   发布时间: 2003-09-23

谢谢守柔,但不知道为什么,我打开该文件确是空的。我用的是WORD2000。

作者: jls   发布时间: 2003-09-23

就是一个类似游戏的登录,只要你猜的次数

作者: 守柔   发布时间: 2003-09-23

谢谢守柔。

作者: jls   发布时间: 2003-09-23

经过多次试验,简化了一些代码,对于长文档和多段落,可以加提高25%的运行速度,对于1000个段落以上的文档,显然还是时间长了一些,不是很满意。Sub blankdel()Application.ScreenUpdating = FalseDim i As IntegerFor i = ActiveDocument.Paragraphs.Count To 1 Step -1a = ActiveDocument.Paragraphs(i).Range.Endb = ActiveDocument.Paragraphs(i).Range.StartIf a - b = 1 ThenActiveDocument.Paragraphs(i).Range.Deletem = m + 1End IfNext iMsgBox "共删除空白段落" & m & "个"Application.ScreenUpdating = TrueEnd Sub

作者: 守柔   发布时间: 2003-10-15

Sub blankdel()For Each i In ActiveDocument.Paragraphsa = i.Range.Endb = i.Range.StartIf a - b = 1 Theni.Range.Deletem = m + 1End IfNext iMsgBox "共删除空白段落" & m & "个"End Sub在以上发表的三篇文章中,同样的目的不一样的循环过程,其运行速度截然不同,这个代码应该是最快的。

作者: 守柔   发布时间: 2003-10-26

守柔 老师:你好,我现在正想学 VBA for word ,但没这方面的资料,能告诉我哪有吗?

作者: aft   发布时间: 2003-10-26

TO aft:http://club.excelhome.net/dispbbs.asp?boardID=23&ID=26231这是本论坛迄今为止较为全面的WORD VBA方面的学习资料,再次感谢清山兄。其二:WORD VBA中自带的帮助文件, 如果你没有请运行安装程序在自定义中选择。其三通过录制宏来进行学习。

作者: 守柔   发布时间: 2003-10-27

收到,非常感谢 守柔老师和水清山老师。谢谢!!!

作者: aft   发布时间: 2003-10-27

Sub DelBlank()Dim i As Paragraph, n As IntegerApplication.ScreenUpdating = FalseFor Each i In ActiveDocument.ParagraphsIf Len(i.Range) = 1 Theni.Range.Deleten = n + 1End IfNextMsgBox "共删除空白段落" & n & "个"Application.ScreenUpdating = TrueEnd Sub注:

本来不想发表此新贴(时间已长了),一则由于吃了个精华,被人指点,不妥,更不能误人子弟;第二是代码的学习与使用有个过程,有不断完善、更新、更好的过程,好比程序的升级;三则近来较多网友提问关于空白段落删除的问题,使用替换要反复进行多次操作;四则此代码比如某段有1个字或规定几个字的需要删除的,此法更为适宜。年初时笔者曾用此法解决了公司财务每份转型文件(每个长达500~600多页)的限定字符段落的(无效数据/文本)的删除,速度极快。

作者: 守柔   发布时间: 2004-07-08

试了一下斑竹的代码,的确不错,但有一个问题希望能解决,就是当图片和图形不是嵌入式时,如果在空段中间就会和空段一起被删除,请问这个你是怎么考虑的。

另希望能加入功能:只删除选定区域的空段,或者是从光标处开始,不知如何实现

作者: liumu   发布时间: 2005-03-06

VBA都是有一定局限性的,只能针对某一部分对象,而非全部。

有时,一堆代码,用户只要改变了其中的一个位置,所有代码可能全部无效!这个主题是空白段落的删除,不是图片的删除。

至于选定区域或者从光标处开始,是很简单的。但是,还是那句话,你需要将你的正确答案要求目的写出来,请另外重新发个主题贴。

作者: 守柔   发布时间: 2005-03-06

这个方法太好了

我很喜欢楼主

大家别和我争~

作者: 哈哈大将~   发布时间: 2006-06-09

多谢守柔版主!学习了.向您致敬!!

作者: liujy   发布时间: 2006-06-10

谢谢版主!!!!!!!!!!

作者: 玉皇大帝   发布时间: 2006-06-11

谢谢版主!

作者: 掏宝者   发布时间: 2006-07-22

那能否去除回车,全部连为一段呢!

作者: shewoyu   发布时间: 2006-07-22

QUOTE:
以下是引用守柔在2003-10-26 7:31:00的发言:
Sub blankdel()
For Each i In ActiveDocument.Paragraphs
a = i.Range.End
b = i.Range.Start
If a - b = 1 Then
i.Range.Delete
m = m + 1
End If
Next i
MsgBox "共删除空白段落" & m & "个"
End Sub
在以上发表的三篇文章中,同样的目的不一样的循环过程,其运行速度截然不同,这个代码应该是最快的。

象这里就无法去除,请看附件!!

DwmKkko1.rar (9.57 KB)
DwmKkko1.rar (9.57 KB)
[分享]空白段落的删除问题
下载次数: 29
2006-7-22 12:01

作者: shewoyu   发布时间: 2006-07-22

偶是新手,终于试验成功了,感谢!

作者: 看风听雨   发布时间: 2006-09-02

通过对守柔斑竹代码的学习,我明白了算法的重要性.谢谢!

作者: buswalke   发布时间: 2006-10-18

谢谢守柔老师!

作者: linqiang0816   发布时间: 2006-11-01

谢谢守柔斑竹!我从你这里学到很多东西!!再次表示感谢!!!

作者: liujy   发布时间: 2006-11-01

原以为换^p^p最快,还是代码快。

不过:

如果空段很整齐,没那么怪异的偶然空很多,那么还是^p快,毕竟输入代码挺费劲的,顶替换P七八遍的时间啦,而且看的人会感觉很急,哈。

从优化的代码效率看,代码永远是最优秀的解决方案。

作者: poetbox   发布时间: 2006-12-17

QUOTE:
以下是引用shewoyu在2006-7-22 11:54:00的发言:

那能否去除回车,全部连为一段呢!

haha,if so,^p is the faster!

作者: poetbox   发布时间: 2006-12-17

斑竹,有一个问题,没有搞懂,第一段程序和第四段程序的原理应该是一样的,但是里面有一句我不理解,为什么空白段落的长度会是1呢?不是0吗?用字数统计的话也是0啊?

我在WORD里面运行了一下,的确是长度是1,系统怎么会这么认为呢?

作者: linqiang0816   发布时间: 2007-02-14

我已经明白了,也就是回车符也是算是一个字符,所以长度是1。

作者: linqiang0816   发布时间: 2007-02-14

热门下载

更多