Kullanmakta olduğum bir Excel çalışma kitabının dosya boyutunu küçültmeye çalışıyorum. Zaten kullanılmayan satırların bir konu ve gereksiz imajlar vb. Olduğunu biliyorum. Gizem, neden sadece büyümek gibi gözüken gizli bir bölümün var olduğudur.Dosya boyutunu artıran Excel Çalışma Kitabı nesnesine ne gider?
Ben
Sub workbook_objectsize()
With CreateObject("Scripting.FileSystemObject")
Set wb = ActiveWorkbook
WBObjectSize = .GetFile(wb.fullname).Size
MsgBox (Format(WBObjectSize, "#,##0") & " Bytes")
End With
End Sub
ile benim bütün belgenin toplam boyutunu bulabilir ve ben levha tarafından boyutu ve burada
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
egzersizdir kullanarak WB Nesne keşfedebilirsiniz. Ben MyWorkbook
adım 1. onay toplam dosya boyutu ve dosya boyutu levha + wb nesne tarafından
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
adım 2. sadece yeni bir boş sheet1 bırakarak TÜM YAPRAKLARİ SİL ve tekrar
kontrol ettirin MYWORKBOOK Ver0.34 test .xlsm 370,052 Bytes
Wb Object 361,589 Bytes
Sheet1 8,463 Bytes
Evet, dosya boyutu azaldı, ancak her sayfayı sildim. Ancak, bu gizemli Wb Nesnesi aslında daha büyük var. Ne oluyor be??? tek bir boş levha ve bir 370Kb dosyadan başka bir şey ????? BTW'nin aynı testi yeni bir çalışma kitabında çalıştırması, Wb Nesne boyutunu 0 bayt olarak tanımlar.
TL; DR: Yukarıdaki örnekte yer alan Wb nesnesi nedir? Neden büyümeye devam ediyor? Onu 0 Bayt'a kadar nasıl azaltabilirim?
soru ve bunu yedeklemek için ilginç araştırmalar! Maalesef, OT olarak kapanacağını hissediyorum. :( – FreeMan
OT nedir? Umarım kapalı değil, gerçekten buna bir cevaba ihtiyacım var. Web'in her yerine baktım –
OT = Kapalı konu Programlama veya kodla ilgili olmadığı için, bazıları Bunun neden olduğunu bulmak beni çok etkiledi: – FreeMan