Excel外部來源連結刪除:1個VBA迴圈把檔案清乾淨

Excel外部來源連結刪除可以提高效率,避免開啟檔案很慢或者卡位,本文從錄製巨集和參考相關程式碼方式,介紹如何設計1個迴圈,利用BreakLink移除名稱連結。

一、Excel錄製巨集

贊贊小屋先前有文章介紹如何刪除Excel外部檔案連結,在這裡想要錄製成巨集作為程式設計參考,在操作前先利用自製的上方功能區,垂手可得「錄製巨集」,編輯名稱為「Delete」,按「確定」。

一、Excel錄製巨集

二、匯出VBA程式

在錄製巨集的時候刪除Excel連結,完成錄製後進入VBA,可以看到剛才操作背後的程式碼,這部份操作流程可參考贊贊小屋相關文章。VBA操作介面的左邊有個「匯出檔案」,是將VBA程式碼另存,因為原檔案一旦執行,名稱及連結即被刪除,必須在新檔案再匯入程式碼,比較好測試成效。

二、匯出VBA程式

三、Excel名稱Names

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

三、Excel名稱Names

四、程式設計出錯

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

四、程式設計出錯

五、For Each迴圈流程

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

五、For Each迴圈流程

六、VBA LinkSources

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

六、VBA LinkSources

七、Excel外部來源連結刪除

最後修改完成的程式碼。其中「If Not IsEmpty(Links) Then」為判斷是否有連結,這是因為名稱可以統一刪除「Delete」,連結則是要有才能切斷「BreakLink」。實際測試,如果不加判斷式,第一次執行可順利切斷連結,到了第二次執行,程式會報錯,沒辦法完成,所以必須加判斷式。

Excel外部來源連結刪除:1個VBA迴圈把檔案清乾淨

Excel巨集到VBA程式

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

微軟說明頁面:Excel Workbook.BreakLink 方法

想要更多完整的學習資源嗎?歡迎前往贊贊小屋VBA教學中心

贊贊小屋VBA教學

最新文章: