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

news/2024/7/21 5:58:39 标签: wps, excel, vba

背景:

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


http://www.niftyadmin.cn/n/5385908.html

相关文章

基于Java+小程序点餐系统设计与实现(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

向量数据库Milvus字符串查询

因为项目需要&#xff0c;用到了向量数据库Milvus&#xff0c;刚开始都没有遇到问题&#xff0c;直到一个表的主键是字符串&#xff08;VARCHAR&#xff09;&#xff0c;在查询时刚好要以该主键作为查询条件&#xff0c;此时会出现异常&#xff0c;特此记录一下。 记住&#xf…

uniapp微信公众号H5分享

如果项目文件node_modules中没有weixin-js-sdk文件&#xff0c;则直接使用本文章提供的&#xff1b; 如果不生效&#xff0c;则在template.h5.html中引入 <script src"https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> 首先引入weixin-js-…

游戏配置二级缓存一致性问题解决方案

游戏服务器进程在启动的时候&#xff0c;一般会把所有策划配置数据加载到内存里&#xff0c;将主键以及对应的记录存放在一个HashMap容器里&#xff0c;这称为一级缓存。部分功能可能还需要缓存其他数据&#xff0c;这些称为二级缓存。举个例子&#xff0c;对于如下的玩家升级表…

Python 进阶语法:JSON

1 什么是 JSON&#xff1f; 1.1 JSON 的定义 JSON 是 JavaScript Object Notation 的简写&#xff0c;字面上的意思是 JavaScript 对象标记。本质上&#xff0c;JSON 是轻量级的文本数据交换格式。轻量级&#xff0c;是拿它与另一种数据交换格式XML进行比较&#xff0c;相当轻…

nc开发刚导入项目eclipse出现莫名其妙的错误,红叉,感叹号,文件missing

解决类出现红叉 解决感叹号&#xff0c;文件missing 其他问题 右上角的视图&#xff0c;要选择java&#xff0c;如果是javaEE也会有一些文件没有展示出来。

ctfshow-web29~40-WP

web29 if(isset($_GET[c])){$c = $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__); } 首先先system(“ls”);查看一下文件 既然过滤了flag,那我们就fla*的形式进行匹配,结合tac命令输出flag.php文件内容

基于FPGA的二维DCT变换和逆变换verilog实现,包含testbench

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 数据导入到matlab显示图像 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer:…