工作表的插入员工证件照
Excel工作表中批量插入图片的工作,你是否遇到过?如工作表的A列是员工姓名,B列或其他列插入员工证件照。
VBA在Excel工作表中批量插入、删除图片的应用
如何操作?一张张插入,照片大小可能不一致,还要手动调整大小,工作量太大;网上有批量插入照片的视频讲解,但前提是“姓名”列的顺序还必须和照片排列顺序完全一致。这就需要把“姓名”按照片排列的顺序重新排列,或将照片重命名成“姓名”的顺序。
不需要这么麻烦,VBA代码能快速帮你解决问题。只要照片的名称和“姓名”一致,无论照片和“姓名”如何排序,插入的图片都能快速匹配,且图片的长、宽完全适应Excel工作表的行高、列宽,不会出现插入的图片大小一不致的现象。
本期以水浒人物为例。随意在网上搜了几张水浒人物的漫画,不知原出处,如有侵权,请联系删除。
Excel工作表、人物图片及插入图片后效果截图:
直接上代码:
Sub insertPic()
InsertPictures
End Sub
Function InsertPictures() '批量插入图片
Application.DisplayAlerts = False
Dim workBookA As Workbook
Dim workSheetA As Worksheet
Dim Rng As Range
Dim RowsCount, i As Integer
Dim Shp As Shape
Dim folderPath, PicName, PicPathName As String
Set workBookA = Application.ThisWorkbook
Set workSheetA = workBookA.Worksheets("批量插入图片")
RowsCount = Sheets("批量插入图片").Cells(Rows.Count, 1).End(xlUp).Row '计算A例人物姓名数量
folderPath = ThisWorkbook.Path '获取路径,可直接指定路径,本例图片保存在活动工作表所在文件夹下“水浒人物图片”文件夹下
With workSheetA
For i = 2 To RowsCount
PicName = Sheets("批量插入图片").Cells(i, 1).Value & ".jpg" '图片名称为“姓名”列对应的图片名
PicPathName = folderPath & "\水浒人物图片\" & PicName '图片的全路径+图片名称
Set Rng = Sheets("批量插入图片").Cells(i, 2) '图片插到“姓名”对应的B例
Set Shp = Sheets("批量插入图片").Shapes.AddPicture(PicPathName, msoFalse, msoCTrue, Rng.Left, Rng.Top, Rng.Width, Rng.Height) '插入图片,插入图片前提前设置单元格行高、列宽
Next
End With
Set workBookA = Nothing
Set workSheetA = Nothing
Set Shp = Nothing
Set Rng = Nothing
Application.DisplayAlerts = True
End Function
代码截图:
Sub DelPic()
DelPictures
End Sub
Function DelPictures() '批量删除图片
Application.DisplayAlerts = False
Dim workBookA As Workbook
Dim workSheetA As Worksheet
Dim Shp As Shape
Set workBookA = Application.ThisWorkbook
Set workSheetA = workBookA.Worksheets("批量插入图片")
With workSheetA
For Each Shp In .Shapes
Shp.Delete '工作表内所有图片全部删除
Next Shp
End With
End Function
代码截图: