当前位置: 首页 > article >正文

使用VBA快速生成Excel工作表非连续列图片快照

Excel中示例数据如下图所示。

在这里插入图片描述

现在需要拷贝A2:A15,D2:D15,J2:J15,L2:L15,R2:R15为图片,然后粘贴到A18单元格,如下图所示。

在这里插入图片描述

大家都知道VBA中Range对象有CopyPicture方法可以拷贝为图片,但是如果Range对象为非连续区域,那么将产生1004错误,例如:Range("A2:A15,D2:D15").CopyPicture

示例代码如下。

Sub CopyMultiAreasRange()
    Dim sRng As Range, firstC As Range, lastC As Range
    With ThisWorkbook.Sheets(2)
        Set sRng = .Range("A2:A15,D2:D15,J2:J15,L2:L15,R2:R15")
        Set firstC = sRng.Areas(1).Cells(1)
        With sRng.Areas(sRng.Areas.Count)
            Set lastC = .Cells(.Cells.Count)
        End With
        For i = firstC.Column To lastC.Column
            If Intersect(sRng, .Columns(i)) Is Nothing Then
                .Columns(i).Hidden = True
            End If
        Next
        Range(firstC, lastC).CopyPicture xlPrinter, xlPicture
        .Range("A18").Select
        .Paste
        .Columns.Hidden = False
    End With
End Sub

【代码解析】
第4行代码获取指定单元格范围(一些简称为源数据)。
第5行代码获取源数据的第一个单元格。
第6~8行代码获取源数据的最后一个单元格。
第9~13行代码循环遍历列。
第10行代码判断该列是否与源数据有交叉,如果不存在交叉,那么第11行代码隐藏列。
第14行代码拷贝源数据区域为图片,Range(firstC, lastC)为扩展的连续单元格区域。
第15行代码选中目标单元格。
第16行代码粘贴图片。
第17行代码取消隐藏列。


注意:本示例代码仅适用于多个单列非连续区域,并且每个单元格子区域起始行和结束行都相同的场景,如果非连续区域是其他形式的,大家可以修改代码使用类似的思路实现。


http://www.kler.cn/news/329328.html

相关文章:

  • 二、创建drf纯净项目
  • LeetCode 152. 乘积最大子数组
  • TIM(Timer)定时器的原理
  • 深入浅出SpringBoot框架
  • Python 在区块链智能合约开发中的应用与实践
  • 土地规划与区域经济发展:筑基均衡未来的战略经纬
  • MongoDB 工具包安装(mongodb-database-tools)
  • (27)oracle镜像启动
  • 【更新】红色文化之红色博物馆数据集(经纬度+地址)
  • 用Promise实现前端并发请求
  • Win10鼠标总是频繁自动失去焦点-非常有效-重启之后立竿见影
  • Bigemap Pro首发(一款真正全面替代Arcgis的国产基础软件)
  • Linux Mint急救模式
  • 英伟达Ampere架构和Hopper架构技术解析
  • C++(Qt)软件调试---内存调试器Dr.Memory(21)
  • 模拟实战数据落地:MSsql通过存储过程获得销售数据视图
  • Ubuntu20.04中ros2 foxy版本安装gazebo,并运行小车运动demo
  • Java中使用接口实现回调函数的详解与示例
  • C语言、Eazy_X——五子棋
  • 零知识证明在BSV网络上的应用
  • 高度细化的SAGA模式实现:基于Spring Boot与RabbitMQ的跨服务事务
  • 甄选范文“论软件的可靠性设计”,软考高级论文,系统架构设计师论文
  • Vue页面,基础配置
  • 机器学习模型评估
  • Web APIs 4:日期对象、时间戳、节点操作、swiper插件
  • VS code user setting 与 workspace setting 的区别
  • 前端规范工程-2:JS代码规范(Prettier + ESLint)
  • consul 介绍与使用,以及spring boot 项目的集成
  • Servlet——springMvc底层原理
  • 苏州 数字化科技展厅展馆-「世岩科技」一站式服务商