此方法仅适用于因对象导致文件大、慢。
文件大、慢也可能是公式太多、excel 行列太多 或 图片未压缩。
问题:
有一份excel 里面有20张表格,数据不多,公式不多但是文件大占17MB 。
简单方法1:
一张张表格点,找到最慢的那张表,之后重做那张慢表。
简单方法2:
找到慢的表格快捷键F5【 定位条件 - 对象 】找到对象后删除 (量少的话简单、速度快)
折腾过后 17MB变成409KB
进阶
扩展思路一:
统计已有对象:(打开后运行不卡)
效果如下:
代码如下:
工作表右键查看代码,新建模块。直接运行
Sub CountShapes()
Dim n As Double
Dim ws As Worksheet
Dim Content As String
For Each ws In Worksheets
n = ws.Shapes.Count
Content = Content & "工作表" & ws.Name & " 有" & n & " 个对象" & vbCrLf
Next
MsgBox Content
End Sub
扩展思路二:
VBA下删除 多余对象
此电脑配置I5-7200U 双核四线程 16G内存 固态硬盘
用代码删除和F5定位条件删除耗时差不多。 F5定位条件内存占用会高几百MB。删除 6W对象约10分钟。所以还是不需要用代码装X。
处理的时候因为excel界面卡住,可以打开任务管理器,感受内存的跳动。
工作表右键查看代码,新建模块。直接运行
Sub ds()
Dim sh As Worksheet, shp As Shape
For Each sh In Sheets
For Each shp In sh.Shapes
If sh.Shapes.Count > 0 Then
If shp.Type <> msoPicture Then
shp.Delete
End If
End If
Next
Next
ThisWorkbook.Save
End Sub
参考资料:
http://blog.sina.com.cn/s/blog_43eb83b90100pai1.html
官方文档:
Excel 性能:性能和限制改进
https://docs.microsoft.com/zh-cn/office/vba/excel/concepts/excel-performance/excel-performance-and-limit-improvements
Excel 性能:性能和限制改进
https://docs.microsoft.com/zh-cn/office/vba/excel/concepts/excel-performance/excel-improving-calculation-performance