巴蜀兄弟连吧 关注:60贴子:246
  • 1回复贴,共1

根据图片名称插入相应图片

取消只看楼主收藏回复

解决方案:创建矩形,将相应图片作为矩形的填充就行了。
原数据环境如下

相应代码:
Sub test()
Dim rg As Range, shp As Shape
For i = 2 To Cells(Rows.Count, "A").End(3).Row
Set rg = Cells(i, "B")
ActiveSheet.Shapes.AddShape(msoShapeRectangle, rg.Left, rg.Top, rg.Width, rg.Height).Select
Selection.ShapeRange.Fill.UserPicture "E:\图片\" & rg.Offset(0, -1) & ".jpg"
Next
End Sub
如果反复执行上述代码,会重复在同一位置插入图片,导致文件增大,所以,最好在执行代码前,清除所有图形对象
Sub test()
Dim rg As Range, shp As Shape
*---------------------------------------------------
*清除图形对象
For Each shp In ActiveSheet.Shapes
shp.Delete
Next
*---------------------------------------------------
*按名称插入图片
For i = 2 To Cells(Rows.Count, "A").End(3).Row *根据A列开始循环处理
Set rg = Cells(i, "B")
ActiveSheet.Shapes.AddShape(msoShapeRectangle, rg.Left, rg.Top, rg.Width, rg.Height).Select *添加矩形
Selection.ShapeRange.Fill.UserPicture "E:\图片\" & rg.Offset(0, -1) & ".jpg" *在矩形内部用图片填充
Next
End Sub
嘻嘻,写在最后:此贴暂作备忘。


1楼2014-09-14 14:41回复
    注:代码中的*号,应该为英文单引号。
    百度抽风,擅自主张将英文单引号写成了*号。
    使用者自行更正。
    下面是更正后的代码
    Sub test()
    Dim rg As Range, shp As Shape
    Rem ---------------------------------------------------
    Rem 清除图形对象
    For Each shp In ActiveSheet.Shapes
    shp.Delete
    Next
    Rem ---------------------------------------------------
    Rem 按名称插入图片
    Rem 下行代码,根据A列开始循环处理
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
    Set rg = Cells(i, "B")
    Rem 下面代码,添加矩形
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, rg.Left, rg.Top, rg.Width, rg.Height).Select
    Rem 下面代码,在矩形内部用图片填充
    Selection.ShapeRange.Fill.UserPicture "E:\图片\" & rg.Offset(0, -1) & ".jpg"
    Next
    End Sub


    4楼2014-09-17 12:23
    收起回复