【Excel宏自动化】一键导入多张图片,告别加班!
大家好,我是你们的老朋友Menphis。
在日常办公中,我们经常会遇到一些Excel文件需要将多张图片导入单元格场景。
今天就把这个一键导入多张图片的方法分享给你,以后工作需要,点一下,自动搞定。
操作步骤
📌 如何操作excel实现
-
打开Excel文件
-
按住Alt+F11,打开Excel的VBA编辑器
选中左侧任意一个sheet双击
-
复制粘贴魔法代码
-
切换回文件,按
Alt + F8,选择ImportPicturesIntoCells,点击“执行”。在弹出的对话框中,按住Ctrl键可以多选图片文件,然后点击“确定”。 -
切换回文件,提示导入图片成功了。
1. 打开Excel文件

2. 按住Alt+F11,打开Excel的VBA编辑器

选中左侧任意一个sheet双击

3. 复制粘贴魔法代码
Sub ImportPicturesIntoCells()' 声明变量Dim fd As FileDialogDim selectedFile As VariantDim targetCell As RangeDim pic As ShapeDim picPath As StringDim rowOffset As IntegerDim colOffset As IntegerDim cellWidth As DoubleDim cellHeight As DoubleDim startCell As Range' 设置起始单元格,默认是 A2,可根据需要修改Set startCell = ActiveSheet.Range("A2")' 初始化行偏移量rowOffset = 0' 创建文件选择对话框,允许多选Set fd = Application.FileDialog(msoFileDialogFilePicker)With fd.Title = "请选择要导入的图片".Filters.Clear.Filters.Add "图片文件", "*.jpg;*.jpeg;*.png;*.bmp;*.gif", 1.AllowMultiSelect = True' 如果用户未选择文件,则退出If .Show = -1 Then' 循环处理每个选中的文件For Each selectedFile In .SelectedItemspicPath = selectedFile' 确定目标单元格:从起始单元格开始,每张图片向下偏移 rowOffset 行Set targetCell = startCell.Offset(rowOffset, 0)' 获取单元格的尺寸cellWidth = targetCell.WidthcellHeight = targetCell.Height' 插入图片到工作表中Set pic = ActiveSheet.Shapes.AddPicture( _Filename:=picPath, _LinkToFile:=False, _SaveWithDocument:=True, _Left:=targetCell.Left, _Top:=targetCell.Top, _Width:=cellWidth, _Height:=cellHeight)' 设置图片随单元格移动和缩放pic.Placement = xlMoveAndSize' 可选:锁定纵横比,如果不需要可注释掉pic.LockAspectRatio = msoTrue' 行偏移量增加,用于下一张图片(可根据需要改为列偏移)rowOffset = rowOffset + 1Next selectedFileEnd IfEnd With' 释放对象Set fd = NothingMsgBox "图片导入完成!", vbInformationEnd Sub
代码说明
修改起始单元格(可选):代码中默认从 A2 单元格开始放置第一张图片,如果你想从其他单元格开始,请修改 Set startCell = ActiveSheet.Range("A2") 这一行
-
文件选择对话框:使用
FileDialog让用户选择一张或多张图片文件,支持常见图片格式。 -
循环插入:每张图片依次插入到
startCell开始的连续单元格中(向下逐行放置)。 -
图片大小:图片的宽度和高度直接设置为目标单元格的宽度和高度,图片会被拉伸以填满单元格。如果需要保持图片原始比例,可以取消注释
pic.LockAspectRatio = msoTrue这行,但此时图片可能无法完全填满单元格,会有留白。 -
随单元格移动和缩放:
pic.Placement = xlMoveAndSize确保图片会随单元格的行高列宽变化而自动调整位置和大小,实现“嵌入”单元格的效果。 -
布局控制:代码中每张图片放在不同的行(
rowOffset累加)。如果需要横向排列(如每行多张),可以调整偏移逻辑(例如使用列偏移)。
常见问题
-
图片超出单元格边界:若图片插入后没有完全对齐,请确保单元格的行高、列宽已经设置好,且代码中
Left、Top直接使用单元格的位置。 -
图片重叠:如果多个图片插入到同一单元格,检查偏移量是否正确增加。
-
内存/性能:插入大量图片可能较慢,可考虑在代码开头添加
Application.ScreenUpdating = False,结束时恢复,以提高运行速度。

4. 回到文件,按 Alt + F8,选择 ImportPicturesIntoCells,点击“执行”。在弹出的对话框中,按住 Ctrl 键可以多选图片文件,然后点击“确定”。


5.回到文件,我们就可以看到已经导入图片成功了


💬 结语
说实话,写这个宏的初衷,纯粹是想让自己少加点班。没想到分享出去之后,收到了好多留言说“太好用了”“求多分享一些这种实用小工具”。
其实职场里的很多烦恼,往往就差一个“偷懒”的思路。与其埋头苦干,不如花2分钟研究一下怎么让Excel帮你干活。这个宏我已经用了两年,每次运行都觉得自己赚到了时间。
如果你试了之后有什么问题,或者想让我帮你定制其他功能,直接在评论区留言。我不保证秒回,但保证每个都会看。
如果觉得有用,欢迎点赞、在看、分享给身边常用跟Excel打交道的朋友~
夜雨聆风