Excel情报局 Excel职场联盟生产挖掘分享Excel基础技能Excel爱好者大本营用1的Excel基础搞定99的职场问题做一个超级实用的Excel公众号Excel是门手艺玩转需要勇气数万Excel爱好者聚集地SUPEREXCELMAN 前言职场实例 今天我们来解决一个群里的小伙伴提出的问题:如何将一个文件夹内所有的图片批量插入到Excel工作表的B列中,并且图片可以自动适应单元格的大小,从而避免手动调整每张图片的大小的过程。我们用一个简单的例子来模拟说明一下,如下图所示: 文件夹内包含3张图片,现在我们想要将文件内的图片按照从左向右的先后顺序批量插入到Excel工作表的B列中,并且每一张图片自动适应单元格的大小(即每张图片自动布满整个单元格)。如果我们采取的是最原始的方法:点击【插入】【图片】,找到存放图片的文件夹路径,然后选中所有的图片,点击“插入”按钮。但是我们最后发现所有图片虽然批量插入到了Excel工作表中,但是图片是杂乱无章的,且大小非常的大,不能自动放置到单元格中;如果想要放置到单元格中的话,需要一张一张调整大小,然后拖动至单元格中。假设有1000张图片的工作量的话,我们工作效率可想而知了。 方案解决步骤 虽然Excel的基础功能无法实现今天的问题,但是我们可以使用VBA代码的方法批量将图片插入到Excel中,并且自动调整图片大小以适应单元格大小,自动放置到一列的每个单元格中。 下面小编就带大家一起来解决一下今天的这个看似棘手的问题。 首先我们可以简单调整一下插入图片的单元格区域的行高与列宽,这样可以确保我们插入后的图片长宽比例相对美观。根据我们的实际需要进行单元格的大小调整即可。接着,我们选中需要插入图片存放的单元格区域B2:B4,再右击工作表名称标签,点击“查看代码”命令,进入到VBA代码编辑器中(或按快捷键AltF11进入),然后将下面的一段VBA代码复制粘贴到VBA代码窗口中。注意:进入VBA窗口复制粘贴代码前必须先选中存放图片的单元格区域。代码如下: SubInsertPictures()DimPicList()AsVariantDimPicFormatAsStringDimRngAsRangeDimsShapeAsShapeOnErrorResumeNextPicListApplication。GetOpenFilename(PicFormat,MultiSelect:True)xColIndexApplication。ActiveCell。ColumnIfIsArray(PicList)ThenxRowIndexApplication。ActiveCell。RowForlLoopLBound(PicList)ToUBound(PicList)SetRngCells(xRowIndex,xColIndex)SetsShapeActiveSheet。Shapes。AddPicture(PicList(lLoop),msoFalse,msoCTrue,Rng。Left,Rng。Top,Rng。Width,Rng。Height)xRowIndexxRowIndex1NextEndIfEndSub 操作步骤如下图所示: 接着点击VBA代码编辑器上方的【运行】【运行子过程用户窗体】按钮,然后会弹出一个“打开”的对话框,在这个窗口中选择图片存放的文件夹位置路径,找到该文件夹的图片后,全选图片,点击“打开”按钮。最后关闭VBA代码窗口。当我们回到Excel的工作表的时候,发现所有的图片就批量的插入到了工作表中的B列,并且图片自动调节大小适应了每个单元格的大小。如下图所示:注意:此段代码具有一定的局限性,它只能对选中的纵向列中的连续单元格起作用,如果插入的图片在表格中的位置是纵向列且不连续的单元格;或者是横向行的单元格都是无效的。 阅读完文章之后,希望小伙伴们在文章底部帮助小编〔点赞〕点亮〔在看〕;如果觉得内容有价值欢迎〔分享〕给你的同事朋友;小编也和大家一样,正在不断的学习与积累中,坚持持续分享的道路上很艰辛,需要有你们的鼓励与支持!别逃避问题,否则它只会越积越多;每天进步一点点,你就胜过了大多数人。