[VBA] EXCEL 刪除活頁簿中的所有圖片物件

by Mesak

工作上的關係,常常會處理一些 EXCEL 的東西,以前有買一本 快速寫巨集的書 叫做 Excel VBA 747 裡面有許多範例可以拿來直接套用…

當然也要有點 VB 的基礎才行,不然絕對會被 VB 搞混語法。

今天剛好遇到一個問題,業務手中的文件,常常存檔很慢,而且複製的時候都有不明的白邊,都刪除不掉。

我查看之後,使用 [常用] 分頁下 的 [尋找與選取] 按鈕,點選[選取窗格] ,就可以看到文件中有什麼物件

一打開來一看就是一堆的空圖片

嚇~這應該是不知道複製哪個網頁的資料貼上的邊框物件,本來以為不多,想叫他一個一個刪除,沒想到 EXCEL 點選這邊刪除會跑的很久….而且物件還塞了一千多個….

於是就寫了一隻巨集


現在只需要下載我寫好的巨集文件,或是直接將巨集貼上程式碼中,點選 [檢視] 分頁,按[巨集]按鈕,點選[檢視巨集],或是直接按下 [ALT+F8],可以看到目前的巨集,接著按下執行就好了

執行後清潔溜溜

程式碼如下

Option Explicit
Sub DeleteAllPicture()
    Dim myShp  As Shape
    Dim mySht1 As Object
    Dim mySht2 As Worksheet
    Dim myWd   As Window
    Set myWd = ActiveWorkbook.Windows(1)
    For Each mySht1 In myWd.SelectedSheets
        If mySht1.Type = xlWorksheet Then
            Set mySht2 = mySht1
            For Each myShp In mySht2.Shapes
                If myShp.Type = 13 Then
                    myShp.Delete
                End If
            Next
        End If
    Next
    Set mySht1 = Nothing
    Set mySht2 = Nothing
End Sub

Excel 巨集文件下載:excel_delete_all_picture

如果你的EXCEL版本比較舊,可能要手動輸入程式碼喔,該文件必須要 EXCEL 2007 以上開啟

You may also like