Это распространенная проблема с файлами Excel.Если UsedRange
выходит за границы, файл становится раздутым без видимой причины.
Это должно исправить это:
Sub ResetUsedRange()
Dim sht As Worksheet
Dim lng As Long
For Each sht In ActiveWorkbook.Worksheets
lng = sht.UsedRange.Rows.Count
Next
End Sub
Если по какой-то причине это не поможетпросто попробуйте вручную удалить все пустые строки / столбцы в нижней / правой части области данных, нажмите «Сохранить» и проверьте размер файла.
Код взят из здесь .
Редактировать # 1
Этот расширенный код удалит все пустые строки и столбцы на каждом листе в книге за пределами используемого диапазона и попытается впоследствии сбросить UsedRange
.Не забудьте сделать резервную копию вашего файла до выполнения кода, и что уменьшение размера файла происходит только после сохранения файла.В зависимости от количества листов заполнение может занять некоторое время.
Sub DeleteBlankRowsAndColumnsAndResetUsedRange()
Dim rangeBool As Boolean
Dim i As Long, lastCol As Long, lastRow As Long, lng As Long, tempRwsCount As Long
Dim tempRng As Range
Dim sht As Worksheet
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
For Each sht In ThisWorkbook.Sheets
On Error Resume Next
lastRow = sht.Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
lastCol = sht.Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
tempRwsCount = sht.Rows.count
If lastRow > 0 And lastRow < tempRwsCount Then
' delete empty rows and columns
Set tempRng = sht.Rows(lastRow + 1 & ":" & tempRwsCount)
tempRng.Delete
Set tempRng = sht.Columns(lastCol + 1).Resize(, sht.Columns.count - lastCol)
tempRng.Delete
End If
' reset used range
lng = sht.UsedRange.Rows.count
Next sht
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
End Sub
Изменить # 2
Спасибо Shawn V. Wilson
'за указание на то, что ононеобходимо сохранить файл, а затем закрыть и снова открыть , чтобы увидеть изменения в размере файла.