Excel VBA找不到已打开工作簿 执行Application.Run报下标越界错误
Excel VBA下标越界报错解决方案
现有代码错误修复
你提供的第二行代码存在语法错误,Workbook对象赋值必须指定Workbooks集合,正确写法如下:
Dim wb As WorkBook Set wb = Workbooks("book1.xlsm") Application.Run "'book1.xlsm'!run"
修复上述问题后如果还是出现第三行报错,按以下顺序排查:
- 核对文件名拼写:要和Excel标题栏显示的工作簿名称完全一致,包含后缀。如果你的系统开启了「隐藏已知文件类型的扩展名」,你看到的
book1.xlsm可能实际名称是book1.xlsm.xlsm,需要填写完整真实文件名。 - 检查
run宏的定义位置与权限:- 如果
run宏写在工作表模块、类模块中,不是写在标准模块里,调用时需要补全模块名,示例:Application.Run "'book1.xlsm'!模块1.run" - 如果
run宏前加了Private关键字,需要删除Private修饰才能跨工作簿调用
- 如果
- 排查多Excel实例问题:如果
book1.xlsm是在另一个独立的Excel进程中打开的,当前代码所在的Excel进程无法识别该工作簿,就会抛出下标越界错误。你可以打开任务管理器查看是否存在多个EXCEL.EXE进程,关闭所有Excel进程后重新打开两个工作簿再测试。 - 确认宏安全设置:检查Excel信任中心设置,确认
book1.xlsm的宏已经被启用,没有被系统拦截。
内容的提问来源于stack exchange,提问作者febevo1671
相关产品推荐
相关产品推荐

