VBA如何保持檔案乾淨




先前文章分享過如何保持檔案乾淨的兩個重點:刪除名稱和切斷連結。標準流程是管理名稱、刪除名稱、編輯連結、刪除連結,像這樣子一再重覆的1、2、3、4,依照自動化思維,如果有個指令讓Excel自動跑完這四個步驟,豈不效率哉,以下具體分享:

一、利用自製的上方功能區,垂手可得「錄製巨集」,編輯名稱為「Delete」,按「確定」。

利用自製的上方功能區

二、執行文章開始所述的步驟1、2、3、4,結束後進行VBA,可以看到剛才操作背後的程式碼。圖片左邊有個「匯出檔案」,是將VBA程式碼另存,因為原檔案一旦執行,名稱及連結即被刪除,必須在新檔案再匯入程式碼,比較好測試成效。

可以看到剛才操作背後的程式碼

三、錄製的巨集是刪除特定的名稱和連結,但我們目的是刪除所有名稱和連結,因此必須修改巨集。仔細看程式碼,有兩個關鍵字「Names」和「BreakLink」。在Excel官方支援中心,可知「Application.names屬性」代表使用中活頁簿中所有的名稱。

Application.names屬性

四、嘗試參考所錄製的巨集程式碼,編寫「ActiveWorkbook.Names.Delete」,執行後發現此路不通:「物件不支援此屬性或方法」。

ActiveWorkbook.Names.Delete

五、從Names為所有名稱、而且錄製程式中每個Names有括號指定名稱,合理想法為For Each Next依次將每個名稱刪除,修改後的程式碼如圖所示,實地測試真的能刪除Excel中所有名稱。

合理想法為For Each Next依次將每個名稱刪除

六、接著研究如何刪除連結。例如「LinkSources」,本意為:「Returns an array of links in the workbook. 」。

Returns an array of links in the workbook.

七、最後修改完成的程式碼。其中「If Not IsEmpty(Links) Then」為判斷是否有連結,這是因為名稱為刪除「Delete」,連結為切斷「BreakLink」。實際測試,如果不加判斷式,第一次執行可順利切斷連結,到了第二次執行,程式會報錯,沒辦法完成,所以必須加判斷式。VBA畢竟較為複雜,不太能理解的話,可以Google或者Yahoo一下,善用網路資源,是學習VBA的必經之路。

If Not IsEmpty(Links) Then

在Excel高效率工作心法中,自動化是最高層級的追求目標。這一節所介紹的小技巧:錄製巨集後瞭解程式、做點功課後再修改程式碼,便是Excel自動化的實戰課程。只要能製作成複合指令的懶人包,便是屬於自己威力強大的絕招。贊贊小屋下半年預計出版的書籍中,基本上是利用這個絕招將Excel插上翅膀,飛到一個全新領域,敬請期待。






當前文章延伸閱讀:
VBA自動化