Excel中包含大量无尽autoshape、无尽空白单元格怎么办?

司徒正信
2023-12-01

在日常工作中或许会经常遇到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 保存,长长的纵向进度条就回来了

以上欢迎查阅使用,也欢迎提出意见共同讨论

 类似资料: