Excel VBA运行时错误1004:找不到Registration-CM-Before.xls求助
VBA宏运行时错误1004解决方法
长期使用的VBA宏突然报错:运行时错误'1004':抱歉,我们找不到Registration-CM-Before.xls。它是否被移动、重命名或删除了?
宏功能是将Registration-CM-Before工作簿数据迁移至CM Master工作簿,当前两个工作簿均处于打开激活状态,2023年5月使用正常。Registration-CM-Before为旧版Excel创建,当前以兼容模式运行,调试时某行代码被高亮。
具体解决步骤
修正工作簿引用逻辑
报错大概率是代码里用了带绝对路径的引用,或者没正确匹配兼容模式下的工作簿名称。直接引用已打开的工作簿对象,不要依赖路径:' 错误示例(硬编码路径) Set srcWB = Workbooks.Open("D:\Data\Registration-CM-Before.xls") ' 正确示例(引用已打开的工作簿) Set srcWB = Workbooks("Registration-CM-Before.xls")不确定名称的话,打开VBA编辑器按
Ctrl+G调出立即窗口,输入?Workbooks(1).Name和?Workbooks(2).Name,查看当前打开的所有工作簿全名。处理兼容模式问题
旧版.xls的兼容模式可能导致VBA识别异常,先备份原文件,再将Registration-CM-Before另存为新版.xlsx格式(文件>另存为>选择「Excel工作簿」),关闭旧文件后打开新保存的版本,再运行宏测试。避免依赖窗口激活操作
代码里如果用了Activate或Select切换工作簿,容易因焦点问题导致引用失效。改成直接通过对象引用操作:' 错误示例(依赖激活) Workbooks("Registration-CM-Before.xls").Activate Range("A1:Z100").Copy Workbooks("CM Master.xlsx").Activate Range("A1").Paste ' 正确示例(直接对象引用) Workbooks("Registration-CM-Before.xls").Sheets("数据源").Range("A1:Z100").Copy _ Destination:=Workbooks("CM Master.xlsx").Sheets("目标表").Range("A1")确认文件实际名称
检查资源管理器的「文件扩展名」是否开启(查看>勾选「文件扩展名」),确认Registration-CM-Before的实际后缀是.xls,而非被隐藏的.xls.xlsx这类错误命名。
内容的提问来源于stack exchange,提问作者Laurie D
相关产品推荐
相关产品推荐

