有人给我发送了一个 10MB 的 Excel 文件,这给我们带来了电子邮件问题。压缩后,文件大小降到了 1MB 以下,所以可能是 Excel 工作表出了问题,但是有没有办法在不压缩的情况下减小 Excel 文件的大小呢?
顺便说一下,我可以使用多个版本的 Excel。
答案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
删除任何不需要的自定义样式。我使用如下 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
如果工作簿中有 VBA 代码,请尝试将其反编译保存。您可以打开工作簿,打开 VBE,进行一些小改动(添加空格或其他内容),然后不编译项目,保存工作簿。这可以大大减少文件大小。
我确信还有其他方法,但这些是我尝试过并测试过的方法。在我的一个工作簿中,这种方法始终将文件大小从约 15mb 减少到 10mb。
答案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
答案3
其他答案都是正确的,但使用 VB 脚本。如果您不想使用脚本,或者只是偶尔使用,您也可以手动删除未使用的空间:
- 选择工作表内容中的任意单元格
Ctrl
按键盘上的+键Home
选择右下方最后使用的单元格- 滚动回到内容右下角的“真实”最后一个单元格
- 按住
Shift
并单击其下方或右侧的单元格,具体取决于未使用的布局 - 在标记区域内单击鼠标右键,然后选择
Delete Rows
或Delete Columns
,同样取决于布局
如果您想同时删除行和列,则可能需要重复这些步骤。