wordvba批量删除不同样式(巧用VBA实现Word文档多余空白行的删除)

各位粉丝,大家好,不知道大家遇到过这种常见的问题没:word中有很多空白行,如何有效删除这些空白行呢?对于这个问题,我相信各位估计有很多方法,比较常见的也是最原始的方法即是一个个地按键盘上的<Delete>删除这些空白行,还有就是如果发现删除错误了,大不了就用word快速工具栏的“撤销”和“重做”的重做吧!还有没有其他方法吗?估计有。

但是,今天呢,我要将自己的的方法分享给大家,也算是抛砖引玉吧。我的方法就是通过VBA后台实现对多余空白行的删除、撤销和重做操作。下面,我就以干货的形式给大家分享一下我的实现方法和过程吧!希望不要嫌弃哦,呵呵!

首先,我们假设有一篇有多余空白行的一篇word文档。如下图所示

wordvba批量删除不同样式(巧用VBA实现Word文档多余空白行的删除)(1)

图1 有空白行的word文档

然后,我们在这个有多余空白行的word文档的顶部通过“开发工具”功能选项卡—> “旧式工具”—>“ActiveX”。如下图

wordvba批量删除不同样式(巧用VBA实现Word文档多余空白行的删除)(2)

图2 插入ActiveX控件的选择界面

在上图界面选择插入三个标签控件,并且设置其样式。如下图所示

wordvba批量删除不同样式(巧用VBA实现Word文档多余空白行的删除)(3)

图3 插入的三个标签

再次,我们对这个三个标签提示的功能进行代码实现。

(1)模块1代码:

Public k As Integer, dc As Document '定义共有变量k用于统计删除的空 _

白行段落数目(也同时代表了操作的次数),定义文档对象dc用于全局的引用 _

具体文档所要的各种操作

Sub Del_MoreBlank_Lines_Operate() '删除Word文档中多余的空白行

Dim mypar As Paragraph, dc As Document '定义段落对象变量mypar _

、文档对象变量dc

Set dc = ActiveDocument '为文档对象dc指派具体的对象(当前活动文档)

k = 0

For Each mypar In dc.Paragraphs '用For Each循环逐一删除空白行

If Len(Trim(mypar.Range)) = 1 Then '若去掉首尾空格的当前段落对 _

象mypar的范围内容长度测试为1(说明该段落只包含一个回车字符的空 _

行段落),则将该空白行段落删除

mypar.Range.Delete

k = k 1 '及时统计删除的空白行段落数目(也同时代表了操作的次数)

End If

Next

MsgBox "删除了“" & k & "”个空白行!", vbInformation, "提示"

End Sub

Sub Undo_Doc_Operate() '撤销文档目前的各种操作

Set dc = ThisDocument '指派当前文档给予文档对象dc

dc.Undo k 'Undo(k)等价于Undo k,k在这里的意思是dc文档撤销的步数

MsgBox "已经撤销到原始文档初始状态啦!", vbInformation, "提示"

End Sub

Sub Redo_Doc_Operate() '重复文档目前的各种操作

Set dc = ThisDocument '指派当前文档给予文档对象dc

dc.Redo k 'Redo(k)等价于Redo k,k在这里的意思是dc文档重复的步数

MsgBox "再次重新执行删除多余空白行的操作啦!", vbInformation, "提示"

End Sub

(2)ThisDocument里面的代码:

Private Sub Del_Blank_Lines_Click()

Call Del_MoreBlank_Lines_Operate '调用删除多余空白行过程

End Sub

Private Sub Undo_Doc_Click()

Call Undo_Doc_Operate '调用撤销文档目前的各种操作过程

End Sub

Private Sub Redo_Doc_Click()

Call Redo_Doc_Operate '调用重复文档目前的各种操作过程

End Sub

最后,我们来看看效果测试。

删除多余空白行的操作测试效果:我们发现,操作很高效,而且还能提示删除了多少个空白行。如下图所示

wordvba批量删除不同样式(巧用VBA实现Word文档多余空白行的删除)(4)

图4 删除空白行功能测试

撤销到文档初始(原有空白行的情况)状态:我们执行这个功能后,发现瞬间撤销到了文档的初始状态。如下图所示

wordvba批量删除不同样式(巧用VBA实现Word文档多余空白行的删除)(5)

图5 撤销操作功能测试

重做使文档又实现被操作后(被删除了多余空白行)的效果:我们执行这个功能后,发现很对产生了重新再一次删除了多余空白行的操作,效果还是比较令人满意的吧!呵呵。如下图所示哦

wordvba批量删除不同样式(巧用VBA实现Word文档多余空白行的删除)(6)

图6 重做功能测试效果

通过这个案例,我们解决了办公工作中文档多余空白行的高效清理操作。实现的关键技术点主要有:

(1) 定义共有变量k用于统计删除的空白行段落数目(也同时代表了操作的次数)。

(2)通过For Each mypar In dc.Paragraphs循环测试段落长度Len(Trim(mypar.Range)) 是否为1决定该mypar段是否为空白行段落(若去掉首尾空格的当前段落对象mypar的范围内容长度测试为1(说明该段落只包含一个回车字符的空行段落),则应将该空白行段落删除)。

(3)撤销和重做操作主要利用了内部的方法“dc.Undo k 'k在这里的意思是dc文档撤销的步数”和“dc.Redo k 'k在这里的意思是dc文档重复的步数”实现的(很多网上都没有说哦,我现在已经分享给大家了哦!)

好了,已经将全部实现的干货分享给大家了,同样希望大家多多关注(头条号:跟我学office高级办公)和点评哦!谢谢大家!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页