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列,并且图片自动调节大小适应了每个单元格的大小。如下图所示:
注意:
此段代码具有一定的局限性,它只能对选中的纵向列中的连续单元格起作用,如果插入的图片在表格中的位置是纵向列且不连续的单元格;或者是横向行的单元格都是无效的。
阅读完文章之后,希望小伙伴们在文章底部帮助小编
[点赞]+
点亮[在看];
如果觉得内容有价值欢迎
[分享]
给你的同事朋友
;小编也和大家一样,正在不断的学习与积累中,坚持持续分享的道路上很艰辛,需要有你们的鼓励与支持!
别逃避问题,否则它只会越积越多;每天进步一点点,你就胜过了大多数人。
有话要说...