1.情景展示
工作中,我們可能會(huì)遇到這種情況滋饲,需要將拍攝的照片批量插入到excel中
俐筋,出現(xiàn)的問題在于:
我們不僅需要將其一個(gè)一個(gè)的插入到對應(yīng)的單元格中匪凡,還需要將其縮放至合適大小。
工作量很大且繁瑣织中,有沒有辦法能夠解決這個(gè)問題呢锥涕?
2.解決方案
實(shí)現(xiàn)方式:通過宏命令實(shí)現(xiàn)。
第一步:先插入第一張圖片(一般情況下狭吼,批量導(dǎo)入的圖片大小是一致的)层坠;
如上圖所示,將圖片調(diào)整至合適大械篌稀破花;
第二步:按照圖片將單元格調(diào)至合適大小,刪除該圖片疲吸;
選中要插入圖片的單元格座每,將其大小調(diào)整至和剛才圖片的大小一致。
第三步:鼠標(biāo)選中要插入第一張圖片的單元格摘悴;
第四步:ALT+F11-->打開VBA編輯器-->插入-->模塊峭梳;
將下列代碼拷貝至彈出的窗口:
Sub 批量插入圖片且自適應(yīng)單元格()
Dim fileNames As Variant
Dim fileName As Variant
Dim fileFilter As String
'所有圖片文件后面的括號為中文括號
fileFilter = ("所有圖片文件(*.jpg;*.bmp;*.png;*.gif),*.jpg;*.bmp;*.png;*.gif")
fileNames = Application.GetOpenFilename(fileFilter, , "請選擇要插入的圖片", , MultiSelect:=True)
'循環(huán)次數(shù)
Dim i As Single
i = 0
'忽略錯(cuò)誤繼續(xù)執(zhí)行VBA代碼,避免出現(xiàn)錯(cuò)誤消息(數(shù)組fileNames為空時(shí)蹂喻,會(huì)報(bào)錯(cuò))
On Error Resume Next
'循環(huán)插入
For Each fileName In fileNames
'將圖片插入到活動(dòng)的工作表中&選中該圖片
With ActiveSheet.Pictures.Insert(fileName).Select
'圖片自適應(yīng)單元格大小
Dim picW As Single, picH As Single
Dim cellW As Single, cellH As Single
Dim rtoW As Single, rtoH As Single
'鼠標(biāo)所在單元格的寬度
cellW = ActiveCell.Width
'鼠標(biāo)所在單元格的高度
cellH = ActiveCell.Height
'圖片寬度
picW = Selection.ShapeRange.Width
'圖片高度
picH = Selection.ShapeRange.Height
'重設(shè)圖片的寬和高
rtoW = cellW / picW * 0.95
rtoH = cellH / picH * 0.95
If rtoW < rtoH Then
Selection.ShapeRange.ScaleWidth rtoW, msoFalse, msoScaleFromTopLeft
Else
Selection.ShapeRange.ScaleHeight rtoH, msoFalse, msoScaleFromTopLeft
End If
picW = Selection.ShapeRange.Width
picH = Selection.ShapeRange.Height
'鎖定圖片鎖定縱橫比
Selection.ShapeRange.LockAspectRatio = msoTrue
'圖片的位置與大小隨單元格變化而變化
Selection.Placement = xlMoveAndSize
'設(shè)置該圖片的所在位置
Selection.ShapeRange.IncrementLeft (cellW - picW) / 2 + cellW * i
Selection.ShapeRange.IncrementTop (cellH - picH) / 2
End With
i = i + 1
'下一個(gè)
Next fileName
End Sub
第五步:按F5運(yùn)行葱椭;
選中你要插入的圖片--》打開;
3.效果展示
4.擴(kuò)展說明
4.1 代碼說明
將圖片設(shè)置為橫向排列叉橱,代碼如下:
'設(shè)置該圖片的所在位置(圖片橫向排列)
Selection.ShapeRange.IncrementLeft (cellW - picW) / 2 + cellW * i
Selection.ShapeRange.IncrementTop (cellH - picH) / 2
將圖片設(shè)置為縱向排列挫以,代碼如下:
'設(shè)置該圖片的所在位置(圖片縱向排列)
Selection.ShapeRange.IncrementLeft (cellW - picW) / 2
Selection.ShapeRange.IncrementTop (cellH - picH) / 2 + cellH * i
將圖片插入到同一位置,代碼如下:
'設(shè)置該圖片的所在位置(圖片位于同一位置)
Selection.ShapeRange.IncrementLeft (cellW - picW) / 2
Selection.ShapeRange.IncrementTop (cellH - picH) / 2
4.2 技巧說明
選中圖片窃祝,同時(shí)按住Shift鍵和方向鍵掐松,可以實(shí)現(xiàn)對圖片的縮小踱侣、放大;
選中圖片大磺,同時(shí)按住Ctrl鍵和方向鍵抡句,可以實(shí)現(xiàn)對圖片的位置的進(jìn)行微調(diào)。