EXCEL變肥的常見原因是數據過多,特別是在 XFD1048576 打了個 0;變慢的原因主要是公式失序,特別是A:A這類整行整列的公式用太多
然後其它的就是迷團了,主因大概都是 Copy & Paste,但為何會這樣就不是本篇的重點了,我們只想解決問題~
首先讓我們看看xlsx檔案內是發生什麼事~ 當然你也可以無視它直接解決問題 ^_^
請安裝一個軟體 7-Zip,事實上任一個解壓縮軟體都行,只是我比較喜歡這個~
然後在你的迷團般又慢又肥又OOXX的 Excel 檔案 上點右鑑,用 7-Zip 開啟 xlsx 檔
開啟它,你會發現xlsx就是一個 zip 壓縮檔,外面看起來可能是 8 MB,裡面卻是 60 MB!
這個範例檔的「封裝後大小」是8 778 438 byte,但實際是 60 018 263 byre 啊!
點選xl進下一層資料,兩個壓縮比率超大的檔案 / 資料夾預示了問題所在:
drawings 是物件,文字方塊之流的東西,如果沒有一堆流程圖,應該要很小才是
media 是圖片 / 影片,而本次的 xlsx 檔真的有圖片...
worksheets 是試算表本體
styles.xml 是文字格式,一般來說應該要很小才是
先顯示一下清完的結果,drawings資料夾 與 styles.xml 都縮水很多很多
以上只是讓操作人有成就感的東西,不想知道就別看了 XDDDD
讓我們正式用 Excel 開啟那迷團般又慢又肥又OOXX的 xlsx
首先確認一下文字格式 (styles.xml的功能) 已經爆炸
點開長這樣,根本不用算有多少個啊~
請讓我們按下「Alt - F11」開啟 VBA 視窗 (相信我,沒有更方便的方法),在左上的目錄找到「ThisWorkbook」雙擊左鍵,在右邊新開出來的空白視窗 (一般) 填入以下程式碼,按「F5」執行,然後就是喝杯茶等它一下,清一個文字格式大約 0.1 秒,但我們一般發現變慢時都有上千個廢物格式,花上幾分鐘是很正常的。
--
Sub DelCustomStyles()
Dim st As Style
For Each st In ActiveWorkbook.Styles
If Not st.BuiltIn Then st.Delete
Next
End Sub
--
然後就是確認 文字方塊 / 圖片 / 有的沒的物件爆量,
你可以先點選一張圖片/物件,讓「圖片工具」的選單頁出來,然後點選「選取窗格」,沒有物件可選也可以先畫一個出來再點,總之我們需要「選取窗格」
然後點選每一個工作表頁面,看看那個頁面有爆量的物件,如果有幾百頁...嗯....保重
我這邊是有某一頁有上萬個各式物件...點物件都不會有反應,也砍不掉
找到後一樣選「Alt - F11」,在左上的目錄找到那個工作表名稱雙擊左鍵,在右邊新開出來的空白視窗 (一般) 填入以下程式碼,按「F5」執行,然後就是喝杯茶等它一下,清一個物件大約 0.1 秒,但我們一般發現變慢時都有上千個廢物物件,花上幾分鐘是很正常的 (對~跟上面那段廢話是一樣的)。
因為物件是跟著工作表頁面走的,所以只有「當下的」、「指定的」頁面會受到影響,其它工作頁面的物件清不掉,要一頁一頁清。
--
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
myShp.Delete
Next
End If
Next
Set mySht1 = Nothing
Set mySht2 = Nothing
End Sub
--
然後清乾淨啦~~~~
就是存檔時間啦,另存新檔或直接存都可以,Excel 會給你一個警告,簡單說就是剛剛寫的程式在一般的 xlsx 存不下來,就選「是」就好了~
以上程式都是網路上GOOGLE找到,然後再應需求調整,如果有需要請自行增減程式碼