跳转至

EXCEL VBA 图片名批量插入为图片

该宏(脚本)可以根据Excel单元格中的图片名称批量从本地位置找到图片并插入到Excel中指定的单元格。

注:宏(脚本)可以将A列从A2往下的图片名称,自动查找指定目录中的对应图片,并放置到B列;需要其他格式、单元格位置、图片尺寸等请自行修改。(宏命令支持jpg、png图片)

效果示例

A列为图片名称,将从本地指定目录插入对应图片到B

示例模板

开发工具-->宏-->(填写宏名称)-->创建 创建一个宏命令

添加宏

开发者工具-->宏-->(选择宏)-->运行 运行创建的宏命令

运行宏

运行后的结果

运行结果


获取文件名称

在文件目录下创建Bat脚本,填写以下内容并运行
若在excel中已有文件名,则跳过该步骤

dir /B *.* >zero.txt

获取名称脚本

获取名称结果

打开EXCEL的 [开发者工具]

开启开发者工具开始-->选项-->自定义工作区-->开发者工具

开启开发者工具

创建VBA宏

前往开发者工具创建一个VBA宏脚本开发工具-->宏-->(填写宏名称)-->创建

创建宏

编写VBA宏

在弹出窗口填写以下代码

Sub 插入图片() '根据图片名称插入对应图片
Dim r As Long, i As Long
Dim path As String
r = ActiveSheet.[a65536].End(xlUp).Row
path = "D:\图片" '修改图片所在文件夹路径
Columns("B:B").ColumnWidth = 25 '修改图片宽度
Rows("2:65536").RowHeight = 150 '修改图片高度
For i = 1 To r
    If Dir(path & "\" & ActiveSheet.Cells(i, 1) & ".jpg") <> "" Then
        With ActiveSheet.Pictures.Insert(path & "\" & ActiveSheet.Cells(i, 1) & ".jpg").ShapeRange
            .LockAspectRatio = msoFalse
            .Left = ActiveSheet.Cells(i, 2).Left
            .Top = ActiveSheet.Cells(i, 2).Top
            .Height = ActiveSheet.Cells(i, 2).Height
            .Width = ActiveSheet.Cells(i, 2).Width
        End With
    End If
    If Dir(path & "\" & ActiveSheet.Cells(i, 1) & ".png") <> "" Then
        With ActiveSheet.Pictures.Insert(path & "\" & ActiveSheet.Cells(i, 1) & ".png").ShapeRange
            .LockAspectRatio = msoFalse
            .Left = ActiveSheet.Cells(i, 2).Left
            .Top = ActiveSheet.Cells(i, 2).Top
            .Height = ActiveSheet.Cells(i, 2).Height
            .Width = ActiveSheet.Cells(i, 2).Width
        End With
    End If
Next i
End Sub
编写宏

运行宏

开发者工具-->宏-->(选择宏)-->运行

运行宏