Excel情報局
Excel職場聯盟
生産挖掘分享Excel基礎技能
Excel愛好者大本營
用1%的Excel基礎搞定99%的職場問題
做一個超級實用的Excel公衆号
Excel是門手藝玩轉需要勇氣
數萬Excel愛好者聚集地
SUPER EXCEL MAN
前言|職場實例
今天我們來解決一個群裡的小夥伴提出的問題:
如何将一個文件夾内所有的圖片批量插入到Excel工作表的B列中,并且圖片可以自動适應單元格的大小,從而避免手動調整每張圖片的大小的過程。
我們用一個簡單的例子來模拟說明一下,如下圖所示:
文件夾内包含3張圖片,現在我們想要将文件内的圖片按照從左向右的先後順序批量插入到Excel工作表的B列中,并且每一張圖片自動适應單元格的大小(即每張圖片自動布滿整個單元格)。
如果我們采取的是最原始的方法:
點擊【插入】-【圖片】,找到存放圖片的文件夾路徑,然後選中所有的圖片,點擊“插入”按鈕。
但是我們最後發現所有圖片雖然批量插入到了Excel工作表中,但是
圖片是雜亂無章的
,
且大小非常的大
,
不能自動放置到單元格中
;如果想要放置到單元格中的話,需要一張一張調整大小,然後拖動至單元格中。假設有1000張圖片的工作量的話,我們工作效率可想而知了。
方案|解決步驟
雖然Excel的基礎功能無法實現今天的問題,但是我們可以使用VBA代碼的方法批量将圖片插入到Excel中,并且自動調整圖片大小以适應單元格大小,自動放置到一列的每個單元格中。
下面小編就帶大家一起來解決一下今天的這個看似棘手的問題。
首先我們可以簡單調整一下插入圖片的單元格區域的行高與列寬,這樣可以确保我們插入後的圖片長寬比例相對美觀。根據我們的實際需要進行單元格的大小調整即可。
接着,
我們選中需要插入圖片存放的單元格區域B2:B4
,再右擊工作表名稱标簽,點擊“查看代碼”命令,進入到VBA代碼編輯器中(或按快捷鍵Alt+F11進入),然後将下面的一段VBA代碼複制粘貼到VBA代碼窗口中。
注意:
進入VBA窗口複制粘貼代碼前必須先選中存放圖片的單元格區域。
代碼如下:
Sub InsertPictures()Dim PicList() As VariantDim PicFormat As StringDim Rng As RangeDim sShape As ShapeOn Error Resume NextPicList = Application.GetOpenFilename(PicFormat, MultiSelect:=True)xColIndex = Application.ActiveCell.ColumnIf 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 NextEnd IfEndSub
操作步驟如下圖所示:
接着點擊VBA代碼編輯器上方的【運行】-【運行子過程/用戶窗體】按鈕,然後會彈出一個“打開”的對話框,在這個窗口中選擇圖片存放的文件夾位置路徑,找到該文件夾的圖片後,全選圖片,點擊“打開”按鈕。最後關閉VBA代碼窗口。
當我們回到Excel的工作表的時候,發現所有的圖片就批量的插入到了工作表中的B列,并且圖片自動調節大小适應了每個單元格的大小。如下圖所示:
注意:
此段代碼具有一定的局限性,它隻能對選中的縱向列中的連續單元格起作用,如果插入的圖片在表格中的位置是縱向列且不連續的單元格;或者是橫向行的單元格都是無效的。
閱讀完文章之後,希望小夥伴們在文章底部幫助小編
[點贊]+
點亮[在看];
如果覺得内容有價值歡迎
[分享]
給你的同事朋友
;小編也和大家一樣,正在不斷的學習與積累中,堅持持續分享的道路上很艱辛,需要有你們的鼓勵與支持!
别逃避問題,否則它隻會越積越多;每天進步一點點,你就勝過了大多數人。
有話要說...