wps电子表格(xlsx)在excel打开时,多余图形(shapes)的处理

背景:

1. win10, excel 打开 wps 生成的 xlsx文档;

2. 文档中有多余的图形,经检测为shape大类;

3. 文档中可见的图形可以全选后删除; 但是不可见部分仍然存在;

4. vba删除时,可以直接循环删除,类似 shape.delete;

5. vba删除前,如果逐一选择(shape.select)以便查看,则出现多种错误(vba运行异常),但都是运行时错误

错误记录:
1. 类型多样:用shape.name查看,有以下类别:

        1)comment;在visible=false情况下,错误信息为-2147467259-自动化 (Automation) 错误

        2)代表picture的长串字母-数字;

        3)host control x;在visible=false情况下,错误信息为-2147024809-请求的图形已被锁定供选择
2. 经检查,图形(shapes)中有一部分是不可见的,无法选中即不能用shape.select选择;
3. 将不可见图形设置为可见后,则问题解决

解决思路及代码如下:
1. 思路,倒循环, 设置为可见,删除
2. 代码如下:

Public Sub shape_remove()
    'wps xlsx文档,用excel打开后,有多余的图形(shape)出现而在wps中没有
    
    'try to keep previous err file
    If ActiveSheet.Shapes.Count = 0 Then
        Debug.Print "no shapes"
        End
    End If
    
    'test only
    Open ActiveWorkbook.Path & "\err.txt" For Output As #1
    
    'main
    For i = ActiveSheet.Shapes.Count To 1 Step -1
        
        Set sp = ActiveSheet.Shapes(i)
       
        On Error Resume Next
        sp.Select
        Print #1, "i=" & i, "shape name:" & sp.Name
        Print #1, "shape type name:" & TypeName(sp)
        Print #1, "visible=" & CBool(sp.Visible)
        
        If Err.Number <> 0 Then
            Print #1, "Err:" & Err.Number & "-" & Err.Description
            If sp.Visible = 0 Then
                Print #1, i & " not visible."
                sp.Visible = True
                Print #1, "set to visible"
                i = i + 1
                sp.Select 'for shape details check
            End If
        Else
            Print #1, "selected and deleted"
            Selection.Delete
        End If
        On Error GoTo 0

        Print #1, Chr(13)

    Next
    
    'test only
    Close #1
End Sub

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值