1.ALT+F11打開VBE編輯器,新建一個模塊1,輸入如下代碼:
Sub picxz() '以插入圖片文件原名稱作為圖形名稱,單元格大小為基準,依次先行方向再列方向插入,即先A1,A2....再B1,B2....依次類推
Dim picname As Variant, p As Shape, pname As String, stly, p1 As Shape, pnamewr As String, x As Byte, x1 As Byte, itop, ileft, iheight, iwidth, l As Long, h As Long
Const hs As Long = 65536 '每列所能插入圖片的最大個數
stly = vbQuestion & vbYesNo
l = -Int(-Sheets("圖庫").Shapes.Count / hs) '列號
h = Sheets("圖庫").Shapes.Count - (l - 1) * hs '行號
picname = Application.GetOpenFilename(FileFilter:="圖片文件 (*.jpg; *.gif;*.bmp),*.jpg; *.gif;*.bmp,所有文件(*.*),*.*", _
Title:="圖片選擇", MultiSelect:=False)
If picname <> False Then
pname = Split(Dir(picname), ".", 2)(0) '取圖片文件原名稱
pnamewr = pname
itop = Sheets("圖庫").Cells(h, l).Top '確定坐標
ileft = Sheets("圖庫").Cells(h, l).Left
iheight = Sheets("圖庫").Cells(h, l).Height '確定大小
iwidth = Sheets("圖庫").Cells(h, l).Width
For Each p In Sheets("圖庫").Shapes
If p.Name = pname Then
x = MsgBox("發現你的圖庫中已經存在同名圖片,請確定是否為新圖片?", stly, "圖片重名,警告!")
If x = 7 Then
Exit Sub
Else
x1 = MsgBox("您確定需要替換名為:《" & pname & "》的圖片嗎?", stly, "圖片替換,警告!")
If x1 = 6 Then
itop = Sheets("圖庫").Shapes(pname).Top
ileft = Sheets("圖庫").Shapes(pname).Left
iheight = Sheets("圖庫").Shapes(pname).Height
iwidth = Sheets("圖庫").Shapes(pname).Width
Sheets("圖庫").Shapes(pname).Delete
Else
chongshu:
If pnamewr = "" Then
pnamewr = InputBox("您尚未對圖片命名,需要正確命名,方能插入此圖片!", "圖片命名")
Else
pnamewr = InputBox("您的圖庫已經存在以《" & pnamewr & "》為名稱的圖片,需要重新命名,方能插入此圖片!", "圖片命名")
End If
If pnamewr = "" Or pnamewr = pname Then
jinggao:
MsgBox "警告!輸入為空或為同名!請繼續輸入", vbExclamation, "圖片命名警告!"
GoTo chongshu
End If
For Each p1 In Sheets("圖庫").Shapes
If p1.Name = pnamewr Then GoTo jinggao
Next
End If
End If
End If
Next
ActiveSheet.Pictures.Insert(picname).Select
With Selection.ShapeRange
.Name = pnamewr
.LockAspectRatio = msoFalse
.Top = itop
.Left = ileft
.Height = iheight
.Width = iwidth
.Rotation = 0#
End With
End If
End Sub
⑵ vba 怎麼自動插入多個文件夾中的圖片
1.打開Excel文件,錄入數據。
⑶ VBA 窗體控制項 圖片控制項
picturebox1.picture=loadpicture("圖片地址")