我正在嘗試減少我正在使用的Excel工作簿的文件大小。我已經知道未使用的行是一個問題和不必要的圖像等。神祕的原因是爲什麼只有似乎增長的excel的祕密部分?進入增加文件大小的Excel Workbook對象的內容是什麼?
我可以
Sub workbook_objectsize()
With CreateObject("Scripting.FileSystemObject")
Set wb = ActiveWorkbook
WBObjectSize = .GetFile(wb.fullname).Size
MsgBox (Format(WBObjectSize, "#,##0") & " Bytes")
End With
End Sub
發現我的整個文件的總大小,我可以發現由表的規模和使用
Sub GetSheetSizes()
' ZVI:2012-05-18 Excel VBA File Size by Worksheet in File
' CAR:2014-10-07 Enhanced to take hidden and very hidden sheets into account
Dim a() As Variant
Dim Bytes As Double
Dim i As Long
Dim fileNameTmp As String
Dim wb As Workbook
Dim visState As Integer
Set wb = ActiveWorkbook
ReDim a(0 To wb.Sheets.Count, 1 To 2)
' Turn off screen updating
Application.ScreenUpdating = False
On Error GoTo exit_
' Put names into a(,1) and sizes into a(,2)
With CreateObject("Scripting.FileSystemObject")
' Build the temporary file name
Err.Clear
fileNameTmp = .GetSpecialFolder(2) & "\" & wb.Name & ".TMP"
' Put workbook's name and size into a(0,)
a(0, 1) = wb.Name
a(0, 2) = .GetFile(wb.fullname).Size
' Put each sheet name and its size into a(i,)
For i = 1 To wb.Sheets.Count
visState = wb.Sheets(i).Visible
wb.Sheets(i).Visible = -1 ' Show sheet long enough to copy it
DoEvents
wb.Sheets(i).Copy
ActiveWorkbook.SaveCopyAs fileNameTmp
wb.Sheets(i).Visible = visState
a(i, 1) = wb.Sheets(i).Name
a(i, 2) = .GetFile(fileNameTmp).Size
Bytes = Bytes + a(i, 2)
ActiveWorkbook.Close False
Next
Kill fileNameTmp
End With
' Show workbook's name & size
Debug.Print a(0, 1), Format(a(0, 2), "#,##0") & " Bytes"
' Show workbook object's size
Debug.Print "Wb Object", Format(a(0, 2) - Bytes, "#,##0") & " Bytes"
' Show each sheet name and its size
For i = 1 To UBound(a)
Debug.Print a(i, 1), Format(a(i, 2), "#,##0") & " Bytes"
Next
exit_:
' Restore screen updating
Application.ScreenUpdating = True
' Show the reason of error if happened
If Err Then MsgBox Err.Description, vbCritical, "Error"
End Sub
這裏是鍛鍊WB對象。我有MYWORKBOOK
步驟1.檢查總文件大小和文件大小由片+ WB對象
MYWORKBOOK Ver0.34 test.xlsm 932,450 Bytes Total
Wb Object 201,679 Bytes
Home 312,904 Bytes
NISI_DETAIL 40,815 Bytes
DATABASE 49,186 Bytes
Settings 13,690 Bytes
NISI_LIST 27,484 Bytes
PleaseWait 21,232 Bytes
success 22,077 Bytes
Brands 34,721 Bytes
USER_LIST 26,819 Bytes
QUERY_LIST 37,880 Bytes
CAT_MAN_TOOLS 88,406 Bytes
Sheet1 9,997 Bytes
PROMO_LIST 45,560 Bytes
步驟2. DELETE ALL SHEETS只留下一個新的空白Sheet 1中,並再次檢查
MYWORKBOOK Ver0.34 test .xlsm 370,052 Bytes
Wb Object 361,589 Bytes
Sheet1 8,463 Bytes
是文件大小減少了,但那是因爲我刪除了每張紙。但是,這個神祕的Wb對象實際上變大了。我勒個去???只有一張空白紙和一個370Kb文件 順便說一句,在新的工作簿上運行相同的測試yeilds的Wb對象大小爲0字節。
TL; DR:上面例子中的Wb對象究竟是什麼?它爲什麼持續增長?我怎樣才能減少到0字節?
大問題和有趣的研究來支持它!不幸的是,我有一種感覺,它將作爲舊金山關閉。 :( – FreeMan 2015-04-01 19:36:08
什麼是OT?我希望它沒有關閉,我真的需要這個答案。我已經瀏覽了所有網頁。 – 2015-04-01 19:43:04
OT = Off topic。由於它與編程或代碼無關,有些人可能會投票結束它會讓我着迷於爲你找到原因 – FreeMan 2015-04-01 19:46:09