当前位置: > 热博

批量将图片插入到Excel中,且自动调整图片大小以适应单元格的大小!

时间:2022-04-21 00:01:48 热博 我要投稿

Excel情报局

Excel职场联盟 生产挖掘分享Excel基础技能 Excel爱好者大本营 用1%的Excel基础搞定99%的职场问题 做一个超级实用的Excel公众号 Excel是门手艺玩转需要勇气 数万Excel爱好者聚集地 SUPER EXCEL MAN

前言|职场实例

今天我们来解决一个群里的小伙伴提出的问题: 如何将一个文件夹内所有的图片批量插入到Excel工作表的B列中,并且图片可以自动适应单元格的大小,从而避免手动调整每张图片的大小的过程。 我们用一个简单的例子来模拟说明一下,如下图所示:

文件夹内包含3张图片,现在我们想要将文件内的图片按照从左向右的先后顺序批量插入到Excel工作表的B列中,并且每一张图片自动适应单元格的大小(即每张图片自动布满整个单元格)。 如果我们采取的是最原始的方法: 点击【插入】-【图片】,找到存放图片的文件夹路径,然后选中所有的图片,点击“插入”按钮。 但是我们最后发现所有图片虽然批量插入到了Excel工作表中,但是 图片是杂乱无章的 , 且大小非常的大 , 不能自动放置到单元格中 ;如果想要放置到单元格中的话,需要一张一张调整大小,然后拖动至单元格中。假设有1000张图片的工作量的话,我们工作效率可想而知了。

方案|解决步骤

虽然Excel的基础功能无法实现今天的问题,但是我们可以使用VBA代码的方法批量将图片插入到Excel中,并且自动调整图片大小以适应单元格大小,自动放置到一列的每个单元格中。

下面小编就带大家一起来解决一下今天的这个看似棘手的问题。

首先我们可以简单调整一下插入图片的单元格区域的行高与列宽,这样可以确保我们插入后的图片长宽比例相对美观。根据我们的实际需要进行单元格的大小调整即可。 接着, 我们选中需要插入图片存放的单元格区域B2:B4 ,再右击工作表名称标签,点击“查看代码”命令,进入到VBA代码编辑器中(或按快捷键Alt+F11进入),然后将下面的一段VBA代码复制粘贴到VBA代码窗口中。 注意: 进入VBA窗口复制粘贴代码前必须先选中存放图片的单元格区域。 代码如下:

Sub InsertPictures()Dim PicList() As VariantDim PicFormat As StringDim Rng As RangeDim sShape As ShapeOn Error Resume NextPicList = Application.GetOpenFilename(PicFormat, MultiSelect:=True)xColIndex = Application.ActiveCell.ColumnIf IsArray(PicList) Then xRowIndex = Application.ActiveCell.Row For lLoop = LBound(PicList) To UBound(PicList) Set Rng = Cells(xRowIndex, xColIndex) Set sShape = ActiveSheet.Shapes.AddPicture(PicList(lLoop), msoFalse, msoCTrue, Rng.Left, Rng.Top, Rng.Width, Rng.Height) xRowIndex = xRowIndex + 1 NextEnd IfEndSub

操作步骤如下图所示:

接着点击VBA代码编辑器上方的【运行】-【运行子过程/用户窗体】按钮,然后会弹出一个“打开”的对话框,在这个窗口中选择图片存放的文件夹位置路径,找到该文件夹的图片后,全选图片,点击“打开”按钮。最后关闭VBA代码窗口。 当我们回到Excel的工作表的时候,发现所有的图片就批量的插入到了工作表中的B列,并且图片自动调节大小适应了每个单元格的大小。如下图所示: 注意: 此段代码具有一定的局限性,它只能对选中的纵向列中的连续单元格起作用,如果插入的图片在表格中的位置是纵向列且不连续的单元格;或者是横向行的单元格都是无效的。

阅读完文章之后,希望小伙伴们在文章底部帮助小编 [点赞]+ 点亮[在看]; 如果觉得内容有价值欢迎 [分享] 给你的同事朋友 ;小编也和大家一样,正在不断的学习与积累中,坚持持续分享的道路上很艰辛,需要有你们的鼓励与支持! 别逃避问题,否则它只会越积越多;每天进步一点点,你就胜过了大多数人。