tft每日頭條

 > 生活

 > wordvba批量删除不同樣式

wordvba批量删除不同樣式

生活 更新时间:2025-01-19 02:19:34

各位粉絲,大家好,不知道大家遇到過這種常見的問題沒: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高級辦公)和點評哦!謝謝大家!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved