一、前提條件
在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
新聞熱點
疑難解答