ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求教!之前运行没问题的代码今天突然报错了。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-15 23:01 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 laimanwah 于 2024-10-16 10:56 编辑

崩溃了。写了一段代码,将工作簿A的sheet1中数据转换录入到新生成的工作簿B的sheet1,然后将工作簿A的sheet2和sheet3依次复制到工作簿B的sheet2和sheet3,用的是【sh2.Copy after:=newbook.Sheets("表单")】,从开始编写到后续调试到完成编写都是同一部电脑,用的版本是office2021,之前一直没有问题,今天突然拿起来用,用的还是这一部电脑,运行的时候就弹出以下窗口:
报错.png

但是,拿到另外一部电脑运行,就没有这个问题,顺利运行,请教各位大神我的电脑出了啥问题啊哭啊


补充一下代码,代码太长,删减了不不相关部分:


Sub ConvertToForm()

Application.ScreenUpdating = False
Dim wkbname, shtname
Dim sh1, sh2 As Worksheet
wkbname = ThisWorkbook.Name
shtname = ActiveSheet.Name
Set sh1 = Workbooks(wkbname).Sheets("填写说明")
Set sh2 = Workbooks(wkbname).Sheets("货物属性")

Dim rows As Integer '待转换页面最大行数rows
Dim category, NextCategory, TradeType As String
Dim VariablePart, newWorkbookName As String
Dim pc, pjname, cn, rl, et, kp, ei, um, dID, sr, remark, pt As String  '表单内变量
Dim dateandtime As String
Dim i, j, k As Integer '循环参数
VariablePart = ""
dateandtime = Format(Now(), "yyyymmddhhmm")

'确定待转换数据范围
'待转换行范围:2至rows;待转换列范围:2至6
rows = Workbooks(wkbname).Sheets(shtname).Range("A65536").End(xlUp).row

For i = 2 To rows
    '读取每行信息
    '.Value-单元格的数字内容;.Text-文本内容;.Formula-最原本的输入内容
    category = Workbooks(wkbname).Sheets(shtname).Cells(i, 2).Value 'category[i,1]食品种类
      
    '循环到新的食品种类时,新建一个表单
    If category <> VariablePart Then
    TradeType = Workbooks(wkbname).Sheets(shtname).Cells(i, 6).Value '[i,5]贸易类型
    j = 9
    k = k + 1
    VariablePart = category
    newWorkbookName = "2024年" + TradeType + "表单(" + VariablePart + ")"

    Set newbook = Workbooks.Add
    newbook.SaveAs Filename:=Workbooks(wkbname).Path & "\" & Str(k) & "." & newWorkbookName & dateandtime & ".xlsx" '
    newbook.Sheets("sheet1").Select
    newbook.Sheets("sheet1").Name = "表单"
   
    '复制sheets("填写说明")和sheets("货物属性")到sheets("表单")之后
    '添加顺序:从后往前依次添加在sheets("表单")之后
    sh2.Copy after:=newbook.Sheets("表单")
    sh1.Copy after:=newbook.Sheets("表单")
    End If
Next

End Sub

TA的精华主题

TA的得分主题

发表于 2024-10-16 07:41 | 显示全部楼层
看看excel文件扩展名是不是一样的,不是不是版本不同导致的
没有附件只能猜一下了

TA的精华主题

TA的得分主题

发表于 2024-10-16 07:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我估计是你电脑新安装了2003的office,以至于代码新建的工作簿是2003版本的,然后行列数就不够用了。

TA的精华主题

TA的得分主题

发表于 2024-10-16 08:08 来自手机 | 显示全部楼层
我觉得这提示的很清楚了吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-16 09:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liulang0808 发表于 2024-10-16 07:41
看看excel文件扩展名是不是一样的,不是不是版本不同导致的
没有附件只能猜一下了

一直都是用同一个电脑同一个版本的运行的,之前都运行得好好的。昨天突然报错。换一个电脑就没有问题。工作簿A是.xlsm,工作簿B是工作簿A的宏生成的.xlsx。所以我猜是不是office自动更新的问题。

TA的精华主题

TA的得分主题

发表于 2024-10-16 09:23 | 显示全部楼层
你是不是把带宏的工作表插入过去?那样肯定会报错的,文件格式不同

TA的精华主题

TA的得分主题

发表于 2024-10-16 09:29 | 显示全部楼层
贴出代码或者附文件上来,或许能更快获得帮助。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-16 10:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
autohotey 发表于 2024-10-16 09:23
你是不是把带宏的工作表插入过去?那样肯定会报错的,文件格式不同

复制的两个工作表都是纯文字输入的,不带宏,就是昨天突然报错,以前都没问题。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-16 11:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
liulang0808 发表于 2024-10-16 07:41
看看excel文件扩展名是不是一样的,不是不是版本不同导致的
没有附件只能猜一下了

补充了代码,麻烦大神再帮忙看看。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-10-16 16:40 , Processed in 0.037458 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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