前言|職場(chǎng)實(shí)例 今天我們來(lái)解決一個(gè)群里的小伙伴提出的問(wèn)題:如何將一個(gè)文件夾內(nèi)所有的圖片批量插入到Excel工作表的B列中,,并且圖片可以自動(dòng)適應(yīng)單元格的大小,,從而避免手動(dòng)調(diào)整每張圖片的大小的過(guò)程。我們用一個(gè)簡(jiǎn)單的例子來(lái)模擬說(shuō)明一下,,如下圖所示: 文件夾內(nèi)包含3張圖片,,現(xiàn)在我們想要將文件內(nèi)的圖片按照從左向右的先后順序批量插入到Excel工作表的B列中,并且每一張圖片自動(dòng)適應(yīng)單元格的大?。疵繌垐D片自動(dòng)布滿整個(gè)單元格),。點(diǎn)擊【插入】-【圖片】,找到存放圖片的文件夾路徑,,然后選中所有的圖片,,點(diǎn)擊“插入”按鈕。但是我們最后發(fā)現(xiàn)所有圖片雖然批量插入到了Excel工作表中,,但是圖片是雜亂無(wú)章的,,且大小非常的大,不能自動(dòng)放置到單元格中,;如果想要放置到單元格中的話,,需要一張一張調(diào)整大小,,然后拖動(dòng)至單元格中。假設(shè)有1000張圖片的工作量的話,,我們工作效率可想而知了,。方案|解決步驟 雖然Excel的基礎(chǔ)功能無(wú)法實(shí)現(xiàn)今天的問(wèn)題,但是我們可以使用VBA代碼的方法批量將圖片插入到Excel中,,并且自動(dòng)調(diào)整圖片大小以適應(yīng)單元格大小,,自動(dòng)放置到一列的每個(gè)單元格中。 下面小編就帶大家一起來(lái)解決一下今天的這個(gè)看似棘手的問(wèn)題,。 首先我們可以簡(jiǎn)單調(diào)整一下插入圖片的單元格區(qū)域的行高與列寬,,這樣可以確保我們插入后的圖片長(zhǎng)寬比例相對(duì)美觀。根據(jù)我們的實(shí)際需要進(jìn)行單元格的大小調(diào)整即可,。接著,,我們選中需要插入圖片存放的單元格區(qū)域B2:B4,再右擊工作表名稱標(biāo)簽,,點(diǎn)擊“查看代碼”命令,,進(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 操作步驟如下圖所示:
接著點(diǎn)擊VBA代碼編輯器上方的【運(yùn)行】-【運(yùn)行子過(guò)程/用戶窗體】按鈕,然后會(huì)彈出一個(gè)“打開(kāi)”的對(duì)話框,,在這個(gè)窗口中選擇圖片存放的文件夾位置路徑,,找到該文件夾的圖片后,全選圖片,,點(diǎn)擊“打開(kāi)”按鈕,。最后關(guān)閉VBA代碼窗口。當(dāng)我們回到Excel的工作表的時(shí)候,,發(fā)現(xiàn)所有的圖片就批量的插入到了工作表中的B列,,并且圖片自動(dòng)調(diào)節(jié)大小適應(yīng)了每個(gè)單元格的大小。如下圖所示:此段代碼具有一定的局限性,,它只能對(duì)選中的縱向列中的連續(xù)單元格起作用,,如果插入的圖片在表格中的位置是縱向列且不連續(xù)的單元格;或者是橫向行的單元格都是無(wú)效的,。
|