【问题标题】:excel vba won't execute .bat but manually executing bat works fineexcel vba 不会执行 .bat 但手动执行 bat 工作正常
【发布时间】:2016-05-26 15:46:36
【问题描述】:

您好,我有一个工作正常的蝙蝠,名为:start.bat 包含:

start C:\Users\*user*\Documents\*path*\hidebat.vbs

一旦手动打开它就可以完美运行,这意味着它会打开 hidebat.vbs,它会打开一个最小化的 .bat,它将文件上传到我的云。因此它得到了验证。

我已经添加了

pause

到 start.bat 看看它做了什么,当我告诉 excel 打开 start.bat 时,它将打开 cmd 并根据需要显示确切的命令,但它不会执行 hidebat.vbs。

我希望当它从 excel 运行时会存在某种路径约束或环境约束,这会阻止它实际超出那个有限的环境。

在 excel 中,我尝试以 3 种不同的方式调用 .bat:

Dim path As String
path = Application.ActiveWorkbook.path
path = path & "\"
Dim MY_FILENAME3 As String
MY_FILENAME3 = path & "start.bat"

1.

 retVal = Shell(MY_FILENAME3, vbNormalFocus)

 ' NOTE THE BATCH FILE WILL RUN, BUT THE CODE WILL CONTINUE TO RUN.
If retVal = 0 Then
    MsgBox "An Error Occured"
    Close #FileNumber
    End
End If

2.

PathCrnt = ActiveWorkbook.path
Call Shell(PathCrnt & "start.bat")

3.

Dim batPath As String: batPath = path

Call Shell(Environ$("COMSPEC") & " /c " & batPath & "start.bat", vbNormalFocus)

是否有人知道它为什么不执行 .bat 文件,或者我可以做些什么来确保它正确运行?

注意。我认为这是因为它打开了默认路径,所以我会告诉它“cd”到保存 excel 的实际路径以及 .bat 文件所在的位置。

【问题讨论】:

    标签: vba batch-file vbscript execute


    【解决方案1】:

    是的,通过命令将路径设置为一些随机/标准/工作/当前路径,所以我必须添加:

    Print #FileNumber, "cd " & path
    

    到excel宏

    所以 start.bat 看起来像:

    cd *path*
    start *path*\hidebat.vbs
    

    希望这对未来的我有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多