Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3281|回复: 3

[已解决]批量插入图片

[复制链接]
发表于 2016-5-21 14:34 | 显示全部楼层 |阅读模式
本帖最后由 26827557 于 2016-5-22 07:35 编辑

老师你好!我想根据“序号.学生姓名“来作为图片名称,批量插入图片到工作表单元格里,交较好能设置其属性。下面是段代码,能否帮我整理下

Dim a As Object
    Set a = ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\学生图片\" & Range("E10") & "\" & Range("E10") & ".jpg")
    a.Left = [L22].Left
    a.Top = [L22].Top
    a.Height = [L22:X33].Height
最佳答案
2016-5-21 17:59
  1. Sub Macro1()
  2. mypath = ThisWorkbook.Path & ""
  3. For Each m In ActiveSheet.Shapes
  4.     If m.Type <> 8 Then m.Delete
  5. Next
  6. For i = 3 To Range("b65536").End(xlUp).Row
  7.     Set c = Cells(i, 6)
  8.     zf = Cells(i, 1) & "." & Cells(i, 2)
  9.     x = c.Left: y = c.Top
  10.     w = c.Width: h = c.Height
  11.     ActiveSheet.Shapes.AddShape(msoShapeRectangle, x, y, w, h).Select
  12.     Selection.ShapeRange.Fill.UserPicture mypath & zf & ".JPG"
  13. Next
  14. [a1].Activate
  15. End Sub
复制代码
QQ截图20160521140958.jpg

批量插入图片.zip

249.36 KB, 下载次数: 23

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-5-21 17:59 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. mypath = ThisWorkbook.Path & ""
  3. For Each m In ActiveSheet.Shapes
  4.     If m.Type <> 8 Then m.Delete
  5. Next
  6. For i = 3 To Range("b65536").End(xlUp).Row
  7.     Set c = Cells(i, 6)
  8.     zf = Cells(i, 1) & "." & Cells(i, 2)
  9.     x = c.Left: y = c.Top
  10.     w = c.Width: h = c.Height
  11.     ActiveSheet.Shapes.AddShape(msoShapeRectangle, x, y, w, h).Select
  12.     Selection.ShapeRange.Fill.UserPicture mypath & zf & ".JPG"
  13. Next
  14. [a1].Activate
  15. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
26827557 + 1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-5-21 18:19 | 显示全部楼层
dsmch 发表于 2016-5-21 17:59

老师代码中以下有些不明白,能帮我注释下吗?
  • Sub Macro1()
  • mypath = ThisWorkbook.Path & "\"
  • For Each m In ActiveSheet.Shapes
  •     If m.Type <> 8 Then m.Delete  ‘是先删除所有图片?类型Type <> 8 这是什么意思?
  • Next
  • For i = 3 To Range("b65536").End(xlUp).Row
  •     Set c = Cells(i, 6)
  •     zf = Cells(i, 1) & "." & Cells(i, 2)
  •     x = c.Left: y = c.Top
  •     w = c.Width: h = c.Height
  •     ActiveSheet.Shapes.AddShape(msoShapeRectangle, x, y, w, h).Select ‘先选择上?????
  •     Selection.ShapeRange.Fill.UserPicture mypath & zf & ".JPG" ’????????
  • Next
  • [a1].Activate ‘为什么要激活单元格呢
  • End Sub

点评

8是指窗体按钮类型  发表于 2016-5-21 19:36
1、图片,不预先删除,第二次执行代码图片会叠加 2、选择后执行后续属性 3、填充同一路径下文件 4、不激活某单元格,会选中最后填充的图片  发表于 2016-5-21 19:34
回复

使用道具 举报

 楼主| 发表于 2016-5-22 07:34 | 显示全部楼层
dsmch 发表于 2016-5-21 17:59

谢谢老师!理解了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 06:09 , Processed in 0.355676 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表