标题: excel表中图片引用 [打印本页] 作者: nantong718 时间: 2011-6-11 14:11 标题: excel表中图片引用 对这类可以用VBA吗?excel表中图片直接引用
我只有从文件夹中引用图片的一段代码,但是用起来不方便,因为图片还要重命名.现在我需要对已经在excel中的图片再次引用,大小格式什么的一样就行.
附上从文件夹批量导入的代码:
Sub 批量插入图片()
' Dir函数批量获取指定目录下所有文件名和内容
On Error Resume Next
Application.ScreenUpdating = False '关闭屏幕更新
Dim MR As Range
For Each MR In Selection
If Not IsEmpty(MR) And Dir(ActiveWorkbook.Path & "\" & MR.Value & ".jpg") <> "" Then
MR.Select
ML = MR.Left
MT = MR.Top
MW = MR.Width
MH = MR.Height
ActiveSheet.Shapes.AddShape(msoShapeRectangle, ML, MT, MW, MH).Select
Selection.ShapeRange.Fill.UserPicture _
ActiveWorkbook.Path & "\" & MR.Value & ".jpg" '当前文件所在目录下以当前单元内容为名称的.jpg图片
End If
Next
Set MR = Nothing
Application.ScreenUpdating = True '开启屏幕更新
End Sub
參考4樓例子
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 2 And Target.Row > 2 Then
For Each im In ActiveSheet.Pictures
If im.Top = Target(1, 2).Top Then im.Delete: Exit For
Next
pic = ThisWorkbook.Path & "\照片\" & Target & ".jpg"
If Dir(pic) = "" Then Exit Sub
Me.Pictures.Insert(pic).Select '当前文件所在目录下以单元内容为名称的.jpg图片
With Selection
ta = Target(1, 3).MergeArea.Height '(合并)单元高度
tb = Target(1, 3).MergeArea.Width '(合并)单元宽度
tc = .Height '图片高度
td = .Width '图片宽度
tm = Application.WorksheetFunction.Min(ta / tc, tb / td) '单元与图片之间长宽差异比例的最小值
.Height = tc * tm '按比例调整图片宽度
.Width = td * tm '按比例调整图片高度
.Top = Target(1, 3).Top + (ta - .Height) / 2 '垂直居中:
.Left = Target(1, 3).Left + (tb - .Width) / 2 '水平居中:
End With
Target.Select
End If
End Sub