使用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.niftyadmin.cn/n/5682512.html

相关文章

ubuntu中库文件安装的位置以及头文件的位置

在 Ubuntu 系统中,C 的库文件通常安装在 /usr/lib 或 /usr/local/lib 目录下。其中: /usr/lib:主要存放通过包管理器(如 APT)安装的库文件。/usr/local/lib:通常用于存放手动编译安装或第三方软件的库文件…

mariadb实现冷备份与恢复操作案例(物理冷备份,周期性备份)详解

文章目录 前置环境一、物理冷备份1.备份2.恢复检查结果 补充: 周期性恢复操作 前置环境 主机ipmariadb1192.168.10.11mariadb2192.168.10.12 mairadb1操作 安装mariadb yum -y install mariadb-server启动mariadb systemctl start mariadb这里只是演示备份与恢复…

【接口测试】测试试题

需要技能竞赛软件测试资料的同学们可s聊我,详细了解 一、接口测试 (一)概述 按照软件接口测试文档要求,执行接口测试;使用接口测试工具PostMan,编写脚本、配置参数、执行接口,对设计过程及测…

Linux云计算 |【第四阶段】RDBMS1-DAY2

主要内容: 常用函数(函数分类1:单行、分组;函数分类2:字符、数学、日期、流程控制)、分组查询group by、连接查询 一、常用函数 1. 按使用方式分类 ① 单行函数 单行函数(Scalar Functions&…

如何初步部署自己的服务器,达到生信分析的及格线

1,首先是确保自己能够登录: 内网lab 公网ip ssh 此处可以参考我的博客:https://blog.csdn.net/weixin_62528784/article/details/142345268?spm1001.2014.3001.5501 2,现在自己能够通过各种手段(包括校园网vpn&…

python 02 List

Python 1-14 列表 第一课 1437. 是否所有 1 都至少相隔 k 个元素 class Solution:def kLengthApart(self, nums: List[int], k: int) -> bool:cnt k # 处理第一个 1for i, x in enumerate(nums):if x 1:if cnt < k: return Falsecnt 0 # 遇到 1 从新记数else: cnt …

WEB服务器——Tomcat

服务器是可以使用java完成编写&#xff0c;是可以接受页面发送的请求和响应数据给前端浏览器的&#xff0c;而在开发中真正用到的Web服务器&#xff0c;我们不会自己写的&#xff0c;都是使用目前比较流行的web服务器。 如&#xff1a;Tomcat 1. 简介 Tomcat 是一个开源的轻量…

看480p、720p、1080p、2k、4k、视频一般需要多大带宽呢?

看视频都喜欢看高清&#xff0c;那么一般来说看电影不卡顿需要多大带宽呢&#xff1f; 以4K为例&#xff0c;这里引用一位网友的回答&#xff1a;“视频分辨率4092*2160&#xff0c;每个像素用红蓝绿三个256色(8bit)的数据表示&#xff0c;视频帧数为60fps&#xff0c;那么一秒…