【问题标题】:How can to handle the error: Run-time error '53' File not found如何处理错误:找不到运行时错误“53”文件
【发布时间】:2014-11-27 13:11:06
【问题描述】:

当我使用下一个代码时,当我尝试从 excel 启动批处理文件时出现。

Sub RunBatch()
    Call Shell(Environ$("COMSPEC") & " F:\Financial\Data\Reports\ExpensesYTD\Batch1.bat", vbNormalFocus)
End Sub

我有这个错误:

erorr: Run-time error '53' File not found

我该如何解决这个问题?

【问题讨论】:

  • 虽然问题不同,但this 可能会有所帮助
  • 该命令在我看来没问题。 F:是网络驱动器吗?另外你确定文件存在吗?
  • 感谢 Nima,在我的计算机中 F 是本地驱动器。我将 routh 复制到文件中,我已经检查了文件是否存在视觉上。

标签: excel batch-file error-handling vba


【解决方案1】:

两者的结果是什么

dir /B "F:\Financial\Data\Reports\ExpensesYTD\Batch1.bat"
dir /B F:\Financial\Data\Reports\ExpensesYTD\Batch1.bat

由于我们不知道Run-time error '53' 错误消息指的是哪个文件,因此请公开Environ$("COMSPEC") 结果,例如通过MsgBox 并检查dir /B %COMSPEC% 的输出。

并考虑将 cmd 调用更改为 /C,语法如下:

Call Shell(Environ$("COMSPEC") & " /C F:\Financial\Data\Reports\ExpensesYTD\Batch1.bat", vbNormalFocus)
'or even 
Call Shell("cmd /C F:\Financial\Data\Reports\ExpensesYTD\Batch1.bat", vbNormalFocus)

/C 参数确保在批处理文件执行完毕后自动关闭 cmd 窗口

【讨论】:

  • 然后问约瑟夫,该文件存在,当我点击它时,它就可以工作了。当我尝试运行 Excel 时它不起作用。
  • 好的,您可以直观地检查文件是否存在,查看文件,甚至单击它等等,但这一切都无所谓。所有这些都是从 Windows shell GUI(例如从资源管理器)完成的,但您的代码调用 cmd shell。确保文件在 命令行 窗口中可见。为此,请执行cmd 窗口建议的两个dir 命令...也同样尝试dir %comspec%
  • 非常感谢 Josef,您出价的第二行非常好。调用 Shell("cmd /C F:\Financial\Data\Reports\ExpensesYTD\Batch1.bat", vbNormalFocus
猜你喜欢
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2018-03-12
  • 2015-12-06
  • 2020-01-22
  • 1970-01-01
相关资源
最近更新 更多