同事喜欢用 WPS,而我喜欢用 Excel,经常进行文件共享,突然有一天在 Excel 中发现某些图片出现了“无法显示该图片”的红叉,见下图:
图片 Type 属性丢失
于是很自然想手工删除:
选中一张图片,按 Ctrl+A 选中所有图片,再按 Delete,居然删不掉。
试着用以下 VBA 来删除:
Sub DelShapes()
Dim pic As Shape
For Each pic In ActiveSheet.Shapes
pic.Delete
Next
End Sub
居然也没反应,于是使用以下 VBA 查看这些无法删除的对象到底是什么类型:
Sub ShowShapesType()
Dim pic As Shape
For Each pic In ActiveSheet.Shapes
Debug.Print pic.Name
Debug.Print pic.Type
Next
End Sub
程序直接在 Debug.Print pic.Type
报错了,在本地窗口查看对象的 Type 属性,发现 Type 属性<应用程序定义或对象定义错误>
,正常情况下图片的 Type 属性为:msoGraphic
,现在 Type 属性丢失,如果能改变这些对象的类型应该就可以删除了,将所有无法删除的图片组合在一起,这时对象类型就变为了 msoGroup
,就可以正常删除了。
删除方法
- 选中所有的无法显示的图片
- 使用以下任意方法组合图片:
- 右键选择【组合】快捷菜单,再选择【组合】
- 在【图片格式】选项卡,【排列】组,选择【组合】下拉菜单,再选择【组合】
- 再按 Delete 键
关于为什么图片类型会丢失,只能猜测是 WPS 和 Excel 某些不兼容导致的。