大家好,我们今日继续讲解VBA代码解决方案的第101讲内容:工作表中自动插入图片
在工作中经常需要在工作表中插入大量图片,比如在工作表中需要,在A列我们录入名称在B列插入保存在同一目录中的相应的图片,如果使用手工插入不仅非常繁琐且极易出错,而使用VBA代码可以很好的完成操作。看到这里是否大家想到了单位的考勤系统呢?是的,这里的原版就是为了解决考勤系统来写的。
如何在EXCEL的单元格中插入图片呢?这就要用到Pictures.Insert(FilPath)的命令了,其中FilPath为要插入图片的路径。我们看下面的实测代码:
Sub MynzinsertPic()
Dim i As Integer
Dim FilPath As String
Dim rng As Range
Dim ns As String
With Sheets('Sheet14')
For i = 2 To .Range('a65536').End(xlUp).Row
FilPath = ThisWorkbook.Path & '\' & .Cells(i, 1).Text & '.jpg'
If Dir(FilPath) <> '' Then
.Pictures.Insert(FilPath).Select
Set rng = .Cells(i, 2)
With Selection
.Top = rng.Top + 1
.Left = rng.Left + 1
.Width = rng.Width - 1
.Height = rng.Height - 1
End With
Else
ns = ns & Chr(10) & .Cells(i, 1).Text
End If
Next
.Cells(3, 1).Select
End With
If ns <> '' Then
MsgBox ns & Chr(10) & '没有相应的照片,请确认!'
End If
End Sub
代码截图:
代码解析:MynzinsertPic过程使用Insert方法在工作表中插入图片。
第7行代码开始For...Next循环,循环的终值由工作表中A列单元格的行数所决定。
第8行代码字符串变量FilPath保存A列名称单元格所对应的图片文件的路径和文件名,本例中图片文件的文件名应和A列中的名称一致。
第9行到第11行代码使用Dir函数在同一文件夹中查找与A列单元格中的名称相对应的图片文件,如果对应的图片文件存在则使用Insert方法将图片插入到工作表中,并将B列的单元格赋给变量rng。
第12行到第17行代码,当图片片插入到工作表时其实是插入到活动单元格的,此时需设置图片的Top属性和Left属性将图片移动到B列所对应的单元格中,并设置其Width属性和Height属性使其适应所在单元格的大小。
第18、19行代码如果在同一文件夹中没有与A列单元格对应的图片文件,则使用字符串变量ns保存没有图片文件的名称。
第24行到第26行代码如果字符串变量ns不等于空白说明文件夹中缺少图片文件,使用消息框提示。
运行截图:
运行后截图:
今日内容回向:
1 如何往工作表的单元格中插入图片呢?
2 如果原单元格中有图片,代码该如何完善呢?