ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 980|回复: 6

[求助] 自动插入图片问题求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-2-20 14:46 | 显示全部楼层 |阅读模式
用Pictures.Insert 插入图片后 由于图片是链接导致其他电脑不能显示。
求大神帮忙该一下。使用Shape.AddPicture 或者其他方式解决  
图片在G:\公司产品图集
目标 实现同样的功能。
1、根据A列名称 在图集找到相应的图片 插入到D列
2、插入之前先删除现有的照片。
3、插入图片不是链接。
附原有代码

Dim i, arr, str, typ, shp

On Error Resume Next                                          '忽略运行中可能出现的错误

Application.ScreenUpdating = False                            '关闭工作表更新,提高运行速度

Set mysheet1 = ThisWorkbook.Worksheets("生产计划单")              '定义Sheet1工作表

arr = Array(".jpg", ".jpeg", ".png", ".bmp", ".gif", ".tif")  '图片格式集合

For Each shp In mysheet1.Shapes

If shp.Left > mysheet1.Columns("C").Left And shp.Left < mysheet1.Columns("F").Left Then

  shp.Delete   '如果是D-E列单元格里边的图片,则删除

End If

Next

For i = 2 To 1000      '从第2行到1000行

If mysheet1.Cells(i, 2) <> "" Then   '如果B列对应的单元格不为空白,则执行

     For Each typ In arr               '执行图片格式组里面的每一个尝试

      str = "G:\公司产品图集\" & mysheet1.Cells(i, 2).Value & typ  '图片路径

        If Dir(str) <> "" Then                             '如果图片存在,则执行

          mysheet1.Pictures.Insert(str).Select        '插入图片并选择

           With Selection.ShapeRange

            .LockAspectRatio = msoFalse               '不锁定图片的比例

            .Height = mysheet1.Cells(i, 4).Height - 4 '图片的高度设为单元格高度-4

            .Width = mysheet1.Cells(i, 4).Width - 4   '图片的宽度设为单元格高度-4

            .Top = mysheet1.Cells(i, 4).Top + 2       '图片的位置为D列对应单元格到顶部的距离+2

            .Left = mysheet1.Cells(i, 4).Left + 2     '图片的位置为D列对应单元格到左侧的距离+2

           End With

            mysheet1.Cells(i, 4) = ""                 '清空D列对应单元格的内容

          Exit For                                    '导入图片后,退出For循环

        Else

       End If

      Next

End If

Next

mysheet1.Cells(i + 1, 4).Select

Application.ScreenUpdating = True    '恢复更新显示

End Sub

20190101.rar

38.61 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-20 16:21 | 显示全部楼层
自顶  小白鼠求大神们帮忙
谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-21 09:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
自顶 求帮忙

TA的精华主题

TA的得分主题

发表于 2019-2-21 10:53 | 显示全部楼层
上述代码在执行中有什么问题?没有附件不能测试代码。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-21 15:11 | 显示全部楼层
蓝桥玄霜 发表于 2019-2-21 10:53
上述代码在执行中有什么问题?没有附件不能测试代码。

之前摸索用 Pictures.Insert 来批量插入图片,运行没有问题。结果发现这些图片是链接形式,其他人接收到无法正常显示图片。所以想直接插入图片方式保存在excel里。上网查了有Shapes.AddPicture的方式,但是试过几次都没有成功。求帮忙给我改一下。改成图片是插入形式的。谢谢

20190221.rar

507.86 KB, 下载次数: 17

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-21 15:12 | 显示全部楼层
附近已经回复。感谢帮忙。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-21 16:34 | 显示全部楼层
                                         
将文中    mysheet1.Pictures.Insert(str).Select  
换成   Set st = ActiveSheet.Shapes.AddPicture(str, True, True, 10, 10, 10, 10).Select  

问题解决  不知道我这样改合不合理
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 12:38 , Processed in 0.044650 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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