乐于分享
好东西不私藏

【Excel宏自动化】一键导入多张图片,告别加班!

【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 FileDialog    Dim selectedFile As Variant    Dim targetCell As Range    Dim pic As Shape    Dim picPath As String    Dim rowOffset As Integer    Dim colOffset As Integer    Dim cellWidth As Double    Dim cellHeight As Double    Dim 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 .SelectedItems                picPath = selectedFile                ' 确定目标单元格:从起始单元格开始,每张图片向下偏移 rowOffset 行                Set targetCell = startCell.Offset(rowOffset, 0)                ' 获取单元格的尺寸                cellWidth = targetCell.Width                cellHeight = 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 + 1            Next selectedFile        End If    End With    ' 释放对象    Set fd = Nothing    MsgBox "图片导入完成!", vbInformationEnd Sub

代码说明

修改起始单元格(可选):代码中默认从 A2 单元格开始放置第一张图片,如果你想从其他单元格开始,请修改 Set startCell = ActiveSheet.Range("A2") 这一行

  • 文件选择对话框:使用 FileDialog 让用户选择一张或多张图片文件,支持常见图片格式。

  • 循环插入:每张图片依次插入到 startCell 开始的连续单元格中(向下逐行放置)。

  • 图片大小:图片的宽度和高度直接设置为目标单元格的宽度和高度,图片会被拉伸以填满单元格。如果需要保持图片原始比例,可以取消注释 pic.LockAspectRatio = msoTrue 这行,但此时图片可能无法完全填满单元格,会有留白。

  • 随单元格移动和缩放pic.Placement = xlMoveAndSize 确保图片会随单元格的行高列宽变化而自动调整位置和大小,实现“嵌入”单元格的效果。

  • 布局控制:代码中每张图片放在不同的行(rowOffset 累加)。如果需要横向排列(如每行多张),可以调整偏移逻辑(例如使用列偏移)。

常见问题

  • 图片超出单元格边界:若图片插入后没有完全对齐,请确保单元格的行高、列宽已经设置好,且代码中 LeftTop 直接使用单元格的位置。

  • 图片重叠:如果多个图片插入到同一单元格,检查偏移量是否正确增加。

  • 内存/性能:插入大量图片可能较慢,可考虑在代码开头添加 Application.ScreenUpdating = False,结束时恢复,以提高运行速度。

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

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

💬 结语

说实话,写这个宏的初衷,纯粹是想让自己少加点班。没想到分享出去之后,收到了好多留言说“太好用了”“求多分享一些这种实用小工具”。

其实职场里的很多烦恼,往往就差一个“偷懒”的思路。与其埋头苦干,不如花2分钟研究一下怎么让Excel帮你干活。这个宏我已经用了两年,每次运行都觉得自己赚到了时间。

如果你试了之后有什么问题,或者想让我帮你定制其他功能,直接在评论区留言。我不保证秒回,但保证每个都会看。

如果觉得有用,欢迎点赞、在看、分享给身边常用跟Excel打交道的朋友~