Excel VBA如何根据姓名自动插入照片

一、前提条件

在Excel的单元格中,已输入人物的姓名,并且,在姓名的下面,留有空的单元格待插入相应的图片。

如下图一样。比如,B1是姓名,而B3则是要根据张三这个姓名,自动将张三这个人的照片插入到B3中。其它以此类推。



这得使用VBA来完成。

同时,人物的照片所在的文件夹,和Excel工作薄,在相同的路径,比如,下图的位置。



另外,每个员工的照片的名称,都是按照员工的姓名来命名的,如下图。

像这样的问题需求,是具备一定规律的,因此,能使用VBA来完成。

二、实现方法

打开你的Excel,然后执行菜单操作:“工具”→“宏”→“宏”;弹出如下图对话框。



上图中,宏名那里,输入 AutoAddPic ,然后,点击“创建”按钮,弹出代码输入窗口,如下图。



代码如上图,请书写完整,否则会发生异常。为方便大家的学习,下面将代码写为下文,以供参考:

'自动插入图片前,删除所有图片

For Each Shp In ActiveSheet.Shapes

If Shp.Type = msoPicture Then Shp.Delete

Next

Dim MyPcName As String

For i = 1 To ThisWorkbook.ActiveSheet.UsedRange.Rows.Count

If (ActiveSheet.Cells(i, 1).Value = "姓名") Then

MyPcName = ActiveSheet.Cells(i, 2).Value & ".gif"

'MsgBox "图片的完整路径是" & ThisWorkbook.Path & "员工照片" & MyPcName

ActiveSheet.Cells(i + 2, 2).Select '选择要插入图片的单元格作为目标

Dim MyFile As Object

Set MyFile = CreateObject("Scripting.FileSystemObject")

If MyFile.FileExists(ThisWorkbook.Path & "员工照片" & MyPcName) = False Then

MsgBox ThisWorkbook.Path & "员工照片" & MyPcName & "图片不存在"

Else

'在选定的单元格中插入图片

ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "员工照片" & MyPcName).Select

End If

End If

Next i

书写完代码以后,点击窗口中的保存,然后关闭代码窗口,返回Excel窗口。

接着,执行菜单操作:“工具”→“宏”→“宏”,弹出如下图。



选中上面所创建的宏名 AutoAddPic ,然后,点击“执行”按钮,这样,Excel就会根据每个姓名找到所对应的照片,将照片插入到每一个人所对应的相应的单元格。

三、知识扩展

ThisWorkbook.ActiveSheet.UsedRange.Rows.Count该行代码的含义是,获取工作表中的有效数据的最大行。

If (ActiveSheet.Cells(i, 1).Value = "姓名") 判定第一列中的各行,其内容是否为“姓名”二字,是姓名就去找图片来插入,否则就不找。

MyPcName = ActiveSheet.Cells(i, 2).Value & ".gif"获取每个人的照片名称,如 青山.gif

ThisWorkbook.Path & "员工照片" & MyPcName获取每个人的照片所在的路径,是完整的绝对路径,而不是相对路径。

ActiveSheet.Cells(i + 2, 2).Select '选择要插入图片的单元格作为目标,即哪个单元格要插入图片,就选中哪个

ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "员工照片" & MyPcName).Select'在选定的单元格中插入图片

If MyFile.FileExists(ThisWorkbook.Path & "员工照片" & MyPcName) = False Then判断员工照片是否存在

(0)

相关推荐

  • 在Excel中如何使用VBA根据姓名自动插入照片

    一、前提条件 在Excel的单元格中,已输入人物的姓名,并且,在姓名的下面,留有空的单元格待插入相应的图片。 如下图一样。比如,B1是姓名,而B3则是要根据张三这个姓名,自动将张三这个人的照片插入到B ...

  • Excel如何让数据自动插入小数点

    我们在做Excel表格时,需要输入大量的数据,而且这些数据小数位数固定,使用什么方法实现免小数点快速输入数据呢?下面给大家介绍方法。 启动Excel,新建文档如下图所示。 单击菜单栏“文件”,然后在打 ...

  • 为excel vba中添加.删除模块并插入全过程图文详解

    为excel vba中添加、删除模块并插入全过程图文详解 方法/步骤 1、点按快速启动栏excel 程序图标 进入excel 界面 点击选中任意单元格 然后按alt+f11 进入vbe界面 2、点击菜 ...

  • 只需几步 Excel自动插入序号方法介绍

    工作中,在工作表中插入序号,是很平常的,下拉单元格就可以解决,但是,如果序号是1-100000呢,那要拉很久啊,今天分享一个超级简单的方法,秒完成 1.新建工作表,在A列插入序号 2.选中A1单元格, ...

  • excel如何根据姓名自动生成序号呢?

    为了发挥excel强大功能 ,提高办公自动化的效率 ,多掌握一些excel的操作技巧 ,可达到事倍功半的效果;在Excel电子表格中进行数据录入时,经常需要添加序号,这样更加方便查找,也便于统计.那么 ...

  • excel表格中插入照片的底色怎么设置更改

    今天给大家介绍一下excel表格中插入照片的底色怎么设置更改的具体操作步骤.1. 首先打开电脑上的excel表格,然后依次点击插入---图片,如图,选择一张白底照片插入.2. 然后将照片选中,依次单击 ...

  • Excel VBA单元格的插入、隐藏

    表格中间的行或单元格不足时,需要插入新的行或单元格:当工作表的某些数据不需显示时,又需要对它进行隐藏.利用ExcelVBA 对单元格进行操作时也要涉及单元格的插入与隐藏,本节将介绍如何利用Excel ...

  • Excel自动插入序号

    下面介绍EXCEL自动插入序号的方法,希望本指南能帮到大家. 操作方法 01 自动插入自然数的序号 比如,插入从1到10自然数的序号,我们先在A136单元格中输入1 02 鼠标放在A136单元格右下角 ...

  • Excel VBA教程 Excel多个表格汇总的方法教程

    如果你每天的工作都是把分表格汇总到总表中,那你肯定需要下面我要教给你的这个:用VBA批量把每天的各种表格汇总成一张总表,再也不用每张表格的复制粘贴了.有没有什么办法可以快速将这些分表数据弄到总表中去. ...