ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] excel vba 批量复制图片报错“方法'copy'作用于对象'shape'时失败”

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-11-26 16:08 | 显示全部楼层
本帖最后由 cgzn 于 2020-11-26 16:20 编辑

image.png

TA的精华主题

TA的得分主题

发表于 2020-11-26 16:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-11-26 16:33 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-26 16:43 | 显示全部楼层
cgzn 发表于 2020-11-26 16:09
在copy语句前后各加一句试试,

木有用,后面加的.Activate肯定是解决不了问题的

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-26 16:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mhps159357 发表于 2020-11-26 16:33
加一句,on error resume next

加了这句,肯定不报错,但是图片也不会执行复制了

TA的精华主题

TA的得分主题

发表于 2020-11-26 18:38 | 显示全部楼层
Sheet2.Shapes("图片" & i & "2").Copy
这一句本身没错,但是你表格中图片名称有些重复了,不信你自己提取图片名称看看,有几张图片名称根本跟你这句代码对应不上;所以会报错!
以下是我提取的图片名称:
图片102
图片103
图片103
图片112
图片12
图片122
图片123
图片13
图片132
图片133
图片142
图片142
图片143
图片152
图片153
图片162
图片163
图片172
图片173
图片182
图片183
图片22
图片23
图片32
图片33
图片42
图片43
图片52
图片53
图片62
图片63
图片72
图片73
图片82
图片83
图片92
图片93

TA的精华主题

TA的得分主题

发表于 2020-11-26 18:40 | 显示全部楼层
skylake 发表于 2020-11-26 16:44
加了这句,肯定不报错,但是图片也不会执行复制了

你表格中图片名称有些重复了,有些跟你的代码也对应不上,所以报错了,不信你自己提取图片名称试试!

TA的精华主题

TA的得分主题

发表于 2020-11-26 18:43 | 显示全部楼层
下面是我提取出来的名称,有些跟你这句代码Sheets("sheet1").Shapes("图片" & i & "3").Copy根本不匹配,有些重复,肯定要报错,换其他方法吧,用图片地址处理!
图片102
图片103
图片103
图片112
图片12
图片122
图片123
图片13
图片132
图片133
图片142
图片142
图片143
图片152
图片153
图片162
图片163
图片172
图片173
图片182
图片183
图片22
图片23
图片32
图片33
图片42
图片43
图片52
图片53
图片62
图片63
图片72
图片73
图片82
图片83
图片92
图片93

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-27 09:24 | 显示全部楼层
mhps159357 发表于 2020-11-26 18:43
下面是我提取出来的名称,有些跟你这句代码Sheets("sheet1").Shapes("图片" & i & "3").Copy根本不匹配,有 ...

图片重复的问题是因为有些图片边缘到相邻单元格了,用代码命名的时候导致重复了,前面已经有小伙伴中指出来了,但是报错的原因不是因为图片重复,我猜想是因为速度太快没来得及找到图片,但是添加了Application.   ScreenUpdating 也没用,想不通啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-27 09:53 | 显示全部楼层
本帖最后由 skylake 于 2020-11-27 09:55 编辑

测试成功了,报错的原因还真是运行太快的原因,我在copy前面添加了延时,就能顺利运行下去了感谢@cgzn的提示
  1. Sub test()

  2. Dim i As Integer

  3. Dim t As Date

  4. For i = 1 To Sheet2.Cells(Rows.Count, 1).End(xlUp).Row - 1

  5.     Sheets.Add after:=Sheets(Sheets.Count)
  6.    
  7.     With Sheets(Sheets.Count)
  8.    
  9.         .Name = "图片" & i
  10.         
  11.         .Range("a1").ColumnWidth = 30
  12.         
  13.         .Range("a1").RowHeight = 120
  14.         
  15.         .Range("b1").ColumnWidth = 30
  16.         
  17.         .Range("b1").RowHeight = 120
  18.         
  19.         t = Timer
  20.         
  21.         Do While Timer < t + 0.05
  22.         
  23.             DoEvents
  24.             
  25.         Loop
  26.         
  27.         Sheet2.Shapes("图片" & i & "2").Copy
  28.         
  29.         .Range("a1").Select
  30.         
  31.         .Paste
  32.         
  33.          Sheet2.Shapes("图片" & i & "3").Copy
  34.          
  35.          .Range("b1").Select
  36.         
  37.          .Paste
  38.         
  39.     End With

  40. Next

  41. End Sub
复制代码



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

本版积分规则

关闭

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

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

GMT+8, 2024-4-26 15:50 , Processed in 0.038292 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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