在日常工作中或许会经常遇到Excel中包含了大量的无尽的autoshape形状或者空白单元格,造成Excel运行缓慢卡死,但是原有数据也比较多,不想一点一点修改,再搜索很多资料后,看到了两个大神的操作,下面来分享。
一、无尽 autoshape形状
一个比较好的处理方法是直接用宏来处理,具体方法:
Alt + F11,打开VBA窗口,插入模块,代码区域复制以下代码:
Sub DeletePic()
Dim p As Shape
For Each p In ActiveSheet.Shapes
If p.Type = 1 Then
p.Delete
End If
Next
End Sub
其中Type类型包含很多,可以处理的项目也很多,帮助文档里有以下内容:
MsoShapeType 枚举
指定形状的类型或形状范围。
名称 值 描述
msoAutoShape 1 自选图形。
msoCallout 2 标注。
msoCanvas 20 画布。
msoChart 3 图。
msoComment 4 批注。
msoDiagram 21 图表。
msoEmbeddedOLEObject 7 嵌入的 OLE 对象。
msoFormControl 8 窗体控件。
msoFreeform 5 任意多边形。
msoGroup 6 组合。
msoIgxGraphic 24 IGX 图形
msoInk 22 墨迹
msoInkComment 23 墨迹批注
msoLine 9 线条
msoLinkedOLEObject 10 链接 OLE 对象
msoLinkedPicture 11 链接图片
msoMedia 16 媒体
msoOLEControlObject 12 OLE 控件对象
msoPicture 13 图片
msoPlaceholder 14 占位符
msoScriptAnchor 18 脚本定位标记
msoShapeTypeMixed -2 混和形状类型
msoTable 19 表
msoTextBox 17 文本框
msoTextEffect 15 文本效果
所以根据实际需要,13代表类型为图片,如果要删除autoshape形状,将第四行代码部分的type类型改为1即可
然后,就要看同学你电脑处理器的速度了,可能是漫长无尽的等待,直到处理完毕,所有的autoshape形状就都删除了
二、 无尽空白行、无尽空白列
某大神的操作方法是将空白行/列的行高或者列宽设为默认
选中第一行的空白行,Ctrl + Shift + ↓ 选择所有空白行,设置行高为14.25(默认行高),然后Ctrl + S 保存,长长的横向进度条就回来了
选中第一列的空白列,Ctrl + Shift + → 选择所有空白列,设置列宽为8.38(默认列宽),然后Ctrl + S 保存,长长的纵向进度条就回来了
以上欢迎查阅使用,也欢迎提出意见共同讨论