【问题标题】:Error executing batch file in excel VBA windows在 Excel VBA 窗口中执行批处理文件时出错
【发布时间】:2018-08-23 18:54:33
【问题描述】:

我试图通过标准调用 shell() 函数执行批处理文件。 此批处理文件是特定于项目的,由外部应用程序为每个项目自动创建。主要功能是规范化大约 40 个具有用于我的项目的统计数据的文件。正在从 excel 中获取此数据。手动执行时,整个过程大约需要 30 秒,并且工作正常。

当我尝试在 VBA 中使用调用 shell 函数访问它时,它只弹出 2 秒钟,并且没有从批处理文件生成输出。 我附上了下面用于此的示例代码。我只是在 VBA 宏中步步为营。请原谅我的编码习惯。

Call Shell(Range("L8") & "\DSTAT$.BAT")

我也试过了

`Dim Runcc
 Runcc = Shell(Range("L8") & "\DSTAT$.BAT", 1)`

如果需要任何进一步的信息来解决这个问题,请告诉我。

【问题讨论】:

  • 您必须向我们提供更多信息才能与我们合作......
  • 批处理文件除了运行几秒钟之外还有什么用?您可以在批处理文件的末尾添加pause 命令吗?提供代码示例对于帮助人们了解您正在尝试做什么以及如何帮助您大有帮助。我建议查看帮助中心,尤其是 How to create a Minimal, Complete, and Verifiable example 部分。
  • 抱歉,David,现在我在查询中添加了更多信息。希望这可以帮助。正如我提到的,批处理文件是专门为我正在处理的每个项目创建的。有没有比在每个项目中添加pause 评论更好的方法。

标签: vba excel batch-file


【解决方案1】:

试试

Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1 

With CreateObject("WScript.Shell")
    .Run Range("L8") & "\DSTAT$.BAT", windowStyle, waitOnReturn
End With

我使用它在 Ms-Access 中的 report_open 上使用 Irfanview 将 PDF 转换为 JPG。

盗自vba WScript.Shell run .exe file with parameter

【讨论】:

  • 谢谢!但这也无济于事。我仍然有同样的问题。
  • @Abhi Check path with Debug.Print Range("L8") & "\DSTAT$.BAT" 从即时窗口复制字符串并粘贴到命令行,可能使用了错误的工作表,因为您引用了 ActiveWorkbook.ActiveSheet 隐式,避免这种情况!
猜你喜欢
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多