各位粉絲,大家好,不知道大家遇到過這種常見的問題沒:word中有很多空白行,如何有效删除這些空白行呢?對于這個問題,我相信各位估計有很多方法,比較常見的也是最原始的方法即是一個個地按鍵盤上的<Delete>删除這些空白行,還有就是如果發現删除錯誤了,大不了就用word快速工具欄的“撤銷”和“重做”的重做吧!還有沒有其他方法嗎?估計有。
但是,今天呢,我要将自己的的方法分享給大家,也算是抛磚引玉吧。我的方法就是通過VBA後台實現對多餘空白行的删除、撤銷和重做操作。下面,我就以幹貨的形式給大家分享一下我的實現方法和過程吧!希望不要嫌棄哦,呵呵!
首先,我們假設有一篇有多餘空白行的一篇word文檔。如下圖所示
圖1 有空白行的word文檔
然後,我們在這個有多餘空白行的word文檔的頂部通過“開發工具”功能選項卡—> “舊式工具”—>“ActiveX”。如下圖
圖2 插入ActiveX控件的選擇界面
在上圖界面選擇插入三個标簽控件,并且設置其樣式。如下圖所示
圖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
最後,我們來看看效果測試。
删除多餘空白行的操作測試效果:我們發現,操作很高效,而且還能提示删除了多少個空白行。如下圖所示
圖4 删除空白行功能測試
撤銷到文檔初始(原有空白行的情況)狀态:我們執行這個功能後,發現瞬間撤銷到了文檔的初始狀态。如下圖所示
圖5 撤銷操作功能測試
重做使文檔又實現被操作後(被删除了多餘空白行)的效果:我們執行這個功能後,發現很對産生了重新再一次删除了多餘空白行的操作,效果還是比較令人滿意的吧!呵呵。如下圖所示哦
圖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高級辦公)和點評哦!謝謝大家!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!