首先,前提条件
在Excel的单元格中,已经输入了人名,在人名的下方,有一个空的单元格,用来插入相应的图片。
一样。比如B1是名字,而B3是根据张三的名字自动将张三的照片插入B3。诸如此类。
这必须使用VBA来完成。
同时人的照片所在的文件夹和Excel工作簿在同一个路径,比如在下图所示的位置。
另外,每张员工照片的名字都是以员工的名字命名的。
像这样的问题有一定的规律,所以可以由VBA来完成。
二、实施方法
打开你的Excel,然后执行菜单操作:工具宏宏,会弹出对话框。
在上图中,其中是宏名,输入AutoAddPic,然后点击“创建”按钮,弹出代码输入窗口。
请将代码写完整,否则会出现异常。为了方便大家的学习,下面的代码写成如下,以供参考:
在自动插入图片之前,请删除所有图片。
对于ActiveSheet中的每个Shp。形状
如果Shp。Type=msoPicture然后Shp。删除
然后
Dim MyPcName作为字符串
对于本工作簿,i=1。active sheet . used range . rows . count
If (ActiveSheet。单元格(I,1)。Value=' name ')然后
MyPcName=ActiveSheet。单元格(I,2)。价值。' gif '
“MsgBox”图片的完整路径是“ThisWorkbook”。路径'员工照片' MyPcName。
Activesheet.cells (i2,2)。选择要插入图片的单元格作为目标。
将我的文件作为对象变暗
Set MyFile=CreateObject('脚本。file system object’)
my file . file exists(this workbook . path ' employee photos ' mypc name)=False Then
Gboxthisworkbook.path '员工照片' MyPcName '图片不存在'
其他
在所选单元格中插入图片。
active sheet . pictures . insert(this workbook . path ' employee photos ' mypc name)。挑选
如果…就会结束
如果…就会结束
接下来我
编写完代码后,单击窗口中的保存,然后关闭代码窗口并返回Excel窗口。
接下来,执行菜单操作:工具宏宏。
选择上面创建的宏名AutoAddPic,然后单击“执行”按钮。这样,Excel会根据每个名字找到对应的照片,并将照片插入到每个人对应的单元格中。
第三,知识扩展
此工作簿。active sheet . used range . rows . count这一行代码的意义是获取工作表中有效数据的最大行数。
If (ActiveSheet。单元格(I,1)。Value=' name ')确定第一列中每一行的内容是否为单词“name”。如果是名字就找图插,否则就不要找了。
MyPcName=ActiveSheet。单元格(I,2)。价值。' gif '获取每个人的照片名,比如Aoyama.gif。
此工作簿。Path '员工照片' MyPcName每个人拍照的路径是一个完整的绝对路径,而不是相对路径。
Activesheet.cells (i2,2)。选择要插入图片的单元格作为目标,即选择要插入图片的单元格。
active sheet . pictures . insert(this workbook . path ' employee photos ' mypc name)。选择以在所选单元格中插入图片。
my file . file exists(this workbook . path ' employee photos ' mypc name)=False然后判断员工照片是否存在。