前言|職場實例 如何將一個文件夾內(nèi)所有的圖片批量插入到Excel工作表的B列中,并且圖片可以自動適應(yīng)單元格的大小,從而避免手動調(diào)整每張圖片的大小的過程。文件夾內(nèi)包含3張圖片,現(xiàn)在我們想要將文件內(nèi)的圖片按照從左向右的先后順序批量插入到Excel工作表的B列中,并且每一張圖片自動適應(yīng)單元格的大?。疵繌垐D片自動布滿整個單元格)。點擊【插入】-【圖片】,找到存放圖片的文件夾路徑,然后選中所有的圖片,點擊“插入”按鈕。但是我們最后發(fā)現(xiàn)所有圖片雖然批量插入到了Excel工作表中,但是圖片是雜亂無章的,且大小非常的大,不能自動放置到單元格中;如果想要放置到單元格中的話,需要一張一張調(diào)整大小,然后拖動至單元格中。假設(shè)有1000張圖片的工作量的話,我們工作效率可想而知了。方案|解決步驟 雖然Excel的基礎(chǔ)功能無法實現(xiàn)今天的問題,但是我們可以使用VBA代碼的方法批量將圖片插入到Excel中,并且自動調(diào)整圖片大小以適應(yīng)單元格大小,自動放置到一列的每個單元格中。 下面小編就帶大家一起來解決一下今天的這個看似棘手的問題。 首先我們可以簡單調(diào)整一下插入圖片的單元格區(qū)域的行高與列寬,這樣可以確保我們插入后的圖片長寬比例相對美觀。根據(jù)我們的實際需要進(jìn)行單元格的大小調(diào)整即可。接著,我們選中需要插入圖片存放的單元格區(qū)域B2:B4,再右擊工作表名稱標(biāo)簽,點擊“查看代碼”命令,進(jìn)入到VBA代碼編輯器中(或按快捷鍵Alt+F11進(jìn)入),然后將下面的一段VBA代碼復(fù)制粘貼到VBA代碼窗口中。進(jìn)入VBA窗口復(fù)制粘貼代碼前必須先選中存放圖片的單元格區(qū)域。Sub InsertPictures() Dim PicList() As Variant Dim PicFormat As String Dim Rng As Range Dim sShape As Shape On Error Resume Next PicList = Application.GetOpenFilename(PicFormat, MultiSelect:=True) xColIndex = Application.ActiveCell.Column If IsArray(PicList) Then xRowIndex = Application.ActiveCell.Row For lLoop = LBound(PicList) To UBound(PicList) Set Rng = Cells(xRowIndex, xColIndex) Set sShape = ActiveSheet.Shapes.AddPicture(PicList(lLoop), msoFalse, msoCTrue, Rng.Left, Rng.Top, Rng.Width, Rng.Height) xRowIndex = xRowIndex + 1 Next End If End Sub 操作步驟如下圖所示:
接著點擊VBA代碼編輯器上方的【運行】-【運行子過程/用戶窗體】按鈕,然后會彈出一個“打開”的對話框,在這個窗口中選擇圖片存放的文件夾位置路徑,找到該文件夾的圖片后,全選圖片,點擊“打開”按鈕。最后關(guān)閉VBA代碼窗口。當(dāng)我們回到Excel的工作表的時候,發(fā)現(xiàn)所有的圖片就批量的插入到了工作表中的B列,并且圖片自動調(diào)節(jié)大小適應(yīng)了每個單元格的大小。如下圖所示:此段代碼具有一定的局限性,它只能對選中的縱向列中的連續(xù)單元格起作用,如果插入的圖片在表格中的位置是縱向列且不連續(xù)的單元格;或者是橫向行的單元格都是無效的。
|