批量插入图片

gxn8638 / 2023-07-20 / 原文

Alt+F11 或者在标签上右键查看代码

---------------------------------------------

Sub PicturesInsert()

Dim i, arr, str, typ, shp

On Error Resume Next '忽略运行中可能出现的错误

Application.ScreenUpdating = False '关闭工作表更新,提高运行速度

Set mysheet1 = ThisWorkbook.Worksheets("master chart-Woman") '定义Sheet1工作表

arr = Array(".jpg", ".jpeg", ".png", ".bmp", ".gif", ".tif") '图片格式集合

 

For Each shp In mysheet1.Shapes

If shp.Left > mysheet1.Columns("D").Left And shp.Left < mysheet1.Columns("F").Left Then

shp.Delete '如果是E列单元格里边的图片,则删除

End If

Next

 

For i = 7 To 1000 '从第2行到1000行

If mysheet1.Cells(i, 4) <> "" Then '如果A列对应的单元格不为空白,则执行

For Each typ In arr '执行图片格式组里面的每一个尝试

str = "C:\Users\Sean Guo\Desktop\EVA\AW23 product picture file\" & mysheet1.Cells(i, 4).Value & typ '图片路径,更换为实际的

If Dir(str) <> "" Then '如果图片存在,则执行

mysheet1.Pictures.Insert(str).Select '插入图片并选择

With Selection.ShapeRange

.LockAspectRatio = True '不锁定图片的比例

.Height = mysheet1.Cells(i, 5).Height - 4 '图片的高度设为单元格高度-4

 

.Top = mysheet1.Cells(i, 5).Top + 2 '图片的位置为E列对应单元格到顶部的距离+2

.Left = mysheet1.Cells(i, 5).Left + 2 '图片的位置为E列对应单元格到左侧的距离+2

End With

mysheet1.Cells(i, 5) = "" '清空E列对应单元格的内容

Exit For '导入图片后,退出For循环

Else

mysheet1.Cells(i, 5) = "图片不存在" '否则将显示“图片不存在”

End If

Next

End If

Next

mysheet1.Cells(i + 1, 5).Select

Application.ScreenUpdating = True '恢复更新显示

End Sub