'Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?'

"

前景提要(文末提供源碼下載)

相信在平時的工作中,大家可能也會碰到過這樣的問題,表中沒有沒有存儲幾個數據,但是莫名其妙的變得非常的大,打開報表查看,發現有沒有什麼多少數據,按照常規來看,最多也就幾百K的數據,那麼為什麼數據會一下子變的那麼大呢?

因為我們在之前處理工作表的過程中,還遺留一些沒有處理的對象,如歷史的圖片記錄,或者一些無關的格式等其他的設計還存在於我們的其他工作表中,這些都是吃內存的大老虎,這個時候我們就需要刪除那麼看似空白,其實並非真的空白的工作表,來釋放我們的內存

場景說明

來看看我們今天的工作表

"

前景提要(文末提供源碼下載)

相信在平時的工作中,大家可能也會碰到過這樣的問題,表中沒有沒有存儲幾個數據,但是莫名其妙的變得非常的大,打開報表查看,發現有沒有什麼多少數據,按照常規來看,最多也就幾百K的數據,那麼為什麼數據會一下子變的那麼大呢?

因為我們在之前處理工作表的過程中,還遺留一些沒有處理的對象,如歷史的圖片記錄,或者一些無關的格式等其他的設計還存在於我們的其他工作表中,這些都是吃內存的大老虎,這個時候我們就需要刪除那麼看似空白,其實並非真的空白的工作表,來釋放我們的內存

場景說明

來看看我們今天的工作表

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

這裡有3個工作表,但是隻有第一個和第二個工作表有數據,並且只有一行數據,其他的兩個工作表我們在使用完成之後已經清空了,並沒有任何數據

但是可以看到我們還保留了一些邊框的格式設計,以及一些控件未被刪除,通過普通的全選功能並不能選中的,所以導致我們雖然沒有存儲多少數據,但是卻佔用了很大的內容,並且還有一個隱藏的工作表,裡面存儲了很多的圖片,因為再刪除單元格內容的時候,沒有辦法刪除圖片,所以這些歷史圖片也被保存了下來,導致內存非常大

"

前景提要(文末提供源碼下載)

相信在平時的工作中,大家可能也會碰到過這樣的問題,表中沒有沒有存儲幾個數據,但是莫名其妙的變得非常的大,打開報表查看,發現有沒有什麼多少數據,按照常規來看,最多也就幾百K的數據,那麼為什麼數據會一下子變的那麼大呢?

因為我們在之前處理工作表的過程中,還遺留一些沒有處理的對象,如歷史的圖片記錄,或者一些無關的格式等其他的設計還存在於我們的其他工作表中,這些都是吃內存的大老虎,這個時候我們就需要刪除那麼看似空白,其實並非真的空白的工作表,來釋放我們的內存

場景說明

來看看我們今天的工作表

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

這裡有3個工作表,但是隻有第一個和第二個工作表有數據,並且只有一行數據,其他的兩個工作表我們在使用完成之後已經清空了,並沒有任何數據

但是可以看到我們還保留了一些邊框的格式設計,以及一些控件未被刪除,通過普通的全選功能並不能選中的,所以導致我們雖然沒有存儲多少數據,但是卻佔用了很大的內容,並且還有一個隱藏的工作表,裡面存儲了很多的圖片,因為再刪除單元格內容的時候,沒有辦法刪除圖片,所以這些歷史圖片也被保存了下來,導致內存非常大

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

浪費了不少的內存,那麼怎麼將其他的沒有數據的工作表全部刪除呢?

代碼區

Sub delete()
Dim sth As Worksheet
For Each sth In Worksheets
If WorksheetFunction.CountA(sth.UsedRange) = 0 Then
Application.DisplayAlerts = False
sth.delete
Application.DisplayAlerts = True
End If
Next sth
End Sub

代碼執行之後就剩下這兩個工作表了。

"

前景提要(文末提供源碼下載)

相信在平時的工作中,大家可能也會碰到過這樣的問題,表中沒有沒有存儲幾個數據,但是莫名其妙的變得非常的大,打開報表查看,發現有沒有什麼多少數據,按照常規來看,最多也就幾百K的數據,那麼為什麼數據會一下子變的那麼大呢?

因為我們在之前處理工作表的過程中,還遺留一些沒有處理的對象,如歷史的圖片記錄,或者一些無關的格式等其他的設計還存在於我們的其他工作表中,這些都是吃內存的大老虎,這個時候我們就需要刪除那麼看似空白,其實並非真的空白的工作表,來釋放我們的內存

場景說明

來看看我們今天的工作表

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

這裡有3個工作表,但是隻有第一個和第二個工作表有數據,並且只有一行數據,其他的兩個工作表我們在使用完成之後已經清空了,並沒有任何數據

但是可以看到我們還保留了一些邊框的格式設計,以及一些控件未被刪除,通過普通的全選功能並不能選中的,所以導致我們雖然沒有存儲多少數據,但是卻佔用了很大的內容,並且還有一個隱藏的工作表,裡面存儲了很多的圖片,因為再刪除單元格內容的時候,沒有辦法刪除圖片,所以這些歷史圖片也被保存了下來,導致內存非常大

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

浪費了不少的內存,那麼怎麼將其他的沒有數據的工作表全部刪除呢?

代碼區

Sub delete()
Dim sth As Worksheet
For Each sth In Worksheets
If WorksheetFunction.CountA(sth.UsedRange) = 0 Then
Application.DisplayAlerts = False
sth.delete
Application.DisplayAlerts = True
End If
Next sth
End Sub

代碼執行之後就剩下這兩個工作表了。

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

不管是之前未被使用的空白單元格還是已經隱藏起來的帶有歷史圖片的空白工作表都已經被刪除了。

"

前景提要(文末提供源碼下載)

相信在平時的工作中,大家可能也會碰到過這樣的問題,表中沒有沒有存儲幾個數據,但是莫名其妙的變得非常的大,打開報表查看,發現有沒有什麼多少數據,按照常規來看,最多也就幾百K的數據,那麼為什麼數據會一下子變的那麼大呢?

因為我們在之前處理工作表的過程中,還遺留一些沒有處理的對象,如歷史的圖片記錄,或者一些無關的格式等其他的設計還存在於我們的其他工作表中,這些都是吃內存的大老虎,這個時候我們就需要刪除那麼看似空白,其實並非真的空白的工作表,來釋放我們的內存

場景說明

來看看我們今天的工作表

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

這裡有3個工作表,但是隻有第一個和第二個工作表有數據,並且只有一行數據,其他的兩個工作表我們在使用完成之後已經清空了,並沒有任何數據

但是可以看到我們還保留了一些邊框的格式設計,以及一些控件未被刪除,通過普通的全選功能並不能選中的,所以導致我們雖然沒有存儲多少數據,但是卻佔用了很大的內容,並且還有一個隱藏的工作表,裡面存儲了很多的圖片,因為再刪除單元格內容的時候,沒有辦法刪除圖片,所以這些歷史圖片也被保存了下來,導致內存非常大

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

浪費了不少的內存,那麼怎麼將其他的沒有數據的工作表全部刪除呢?

代碼區

Sub delete()
Dim sth As Worksheet
For Each sth In Worksheets
If WorksheetFunction.CountA(sth.UsedRange) = 0 Then
Application.DisplayAlerts = False
sth.delete
Application.DisplayAlerts = True
End If
Next sth
End Sub

代碼執行之後就剩下這兩個工作表了。

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

不管是之前未被使用的空白單元格還是已經隱藏起來的帶有歷史圖片的空白工作表都已經被刪除了。

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

"

前景提要(文末提供源碼下載)

相信在平時的工作中,大家可能也會碰到過這樣的問題,表中沒有沒有存儲幾個數據,但是莫名其妙的變得非常的大,打開報表查看,發現有沒有什麼多少數據,按照常規來看,最多也就幾百K的數據,那麼為什麼數據會一下子變的那麼大呢?

因為我們在之前處理工作表的過程中,還遺留一些沒有處理的對象,如歷史的圖片記錄,或者一些無關的格式等其他的設計還存在於我們的其他工作表中,這些都是吃內存的大老虎,這個時候我們就需要刪除那麼看似空白,其實並非真的空白的工作表,來釋放我們的內存

場景說明

來看看我們今天的工作表

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

這裡有3個工作表,但是隻有第一個和第二個工作表有數據,並且只有一行數據,其他的兩個工作表我們在使用完成之後已經清空了,並沒有任何數據

但是可以看到我們還保留了一些邊框的格式設計,以及一些控件未被刪除,通過普通的全選功能並不能選中的,所以導致我們雖然沒有存儲多少數據,但是卻佔用了很大的內容,並且還有一個隱藏的工作表,裡面存儲了很多的圖片,因為再刪除單元格內容的時候,沒有辦法刪除圖片,所以這些歷史圖片也被保存了下來,導致內存非常大

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

浪費了不少的內存,那麼怎麼將其他的沒有數據的工作表全部刪除呢?

代碼區

Sub delete()
Dim sth As Worksheet
For Each sth In Worksheets
If WorksheetFunction.CountA(sth.UsedRange) = 0 Then
Application.DisplayAlerts = False
sth.delete
Application.DisplayAlerts = True
End If
Next sth
End Sub

代碼執行之後就剩下這兩個工作表了。

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

不管是之前未被使用的空白單元格還是已經隱藏起來的帶有歷史圖片的空白工作表都已經被刪除了。

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

Excel VBA 7.59沒有存儲大數據,看似空白的表,為何佔用大內存?

工作表的內容也是一下子就回歸到了正常的水平了。

代碼分析

今天的代碼相比較之前長篇大論來說,就非常的簡單了。

If WorksheetFunction.CountA(sth.UsedRange) = 0 Then

只要這個工作表沒有任何一個單元格存在數據,那麼就默認是空白工作表,哪怕你裡面存在最多的圖片,控件,等元素都會當成空白工作表,當然你如果隱藏了工作表,也沒用,一樣會被檢查是否是空白工作表,如果是空白工作表,一樣刪除。

今天的知識點就簡單很多了,大家可以趁機放鬆大腦,接受一點簡單易懂的東西了。

=====================================================

今天的代碼比較的簡單,源文件部分數據在執行之後也被刪除了,原版不太好保存,大家可以自己構造數據場景練習

好了,明晚19:00,準時再見!

"

相關推薦

推薦中...