2

Кто-то прислал мне файл Excel размером 10 МБ, что вызвало проблемы с электронной почтой. Когда .zip'е он уходит до 1 МБ, так что, вероятно, что-то не так с таблицей Excel, но есть ли способ уменьшить размер файла Excel без его сжатия?

Кстати, у меня есть ряд версий Excel.

3 ответа3

6

Если есть место, которое можно «вернуть», есть несколько разных вещей, которые вы можете попробовать:

  1. Сбросьте все используемые диапазоны в каждой книге. Это можно сделать с помощью метода VBA, например:

    Public Sub ResetAllLastCells()
    
    Dim wks As Worksheet
    Dim i As Long
    
    For Each wks In ActiveWorkbook.Worksheets
        i = wks.UsedRange.Rows.Count
    Next wks
    
    End Sub
    
  2. Удалите все ненужные пользовательские стили. Я использую метод VBA, как показано ниже, чтобы удалить все пользовательские стили:

    Public Sub StyleKill()
    
    Dim s As Style
    
    For Each s In ActiveWorkbook.Styles
        If Not s.BuiltIn Then
            s.Delete
        End If
    Next s
    
    End Sub
    
  3. Если в книге есть код VBA, попробуйте сохранить его в разобранном виде. Это можно сделать, открыв книгу, открыв VBE, внеся небольшие изменения (добавив пробелы или что-то в этом роде), а затем, не компилируя проект, сохраните книгу. Это может значительно уменьшить размер файла.

Я уверен, что есть и другие способы, но это мои проверенные способы. В одной книге у меня это последовательно уменьшает размер файла с ~ 15мб до 10мб.

2

По моему опыту, наиболее распространенной причиной этого являются пустые строки, которые находятся в пределах используемого диапазона в Excel. Удалите все пустые строки ниже диапазона, который вы фактически использовали (щелкните правой кнопкой мыши слева и удалите целые строки, а не просто очистите содержимое), если это не поможет уменьшить размер, используйте макрос, как показано ниже:

Sub DeleteBlankRows()

Cells.Select
Dim i As Long

    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False

    For i = Selection.Rows.Count To 1 Step -1
        If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
            Selection.Rows(i).EntireRow.Delete
        End If
    Next i

        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
End Sub
0

Другие ответы верны, но используйте сценарии VB. Если вы не хотите использовать скрипты или если это просто для разовой ситуации, вы также можете удалить неиспользуемое пространство вручную:

  • Выберите любую ячейку в вашем контенте вашего листа
  • Нажмите Ctrl+Home на клавиатуре, чтобы выбрать последнюю использованную ячейку в правой нижней части.
  • Прокрутите назад к своей "настоящей" последней ячейке в правом нижнем углу вашего контента.
  • Удерживая клавишу Shift щелкните ячейку ниже или справа от нее, в зависимости от вашего неиспользованного макета
  • Щелкните правой кнопкой мыши внутри отмеченной области и выберите « Delete Rows или « Delete Columns , снова в зависимости от макета.

Возможно, вам придется повторить эти шаги, если вы хотите удалить строки и столбцы одновременно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .