excel vba不会执行.bat但手动执行bat工作正常

时间:2016-05-26 15:46:37

标签: vba batch-file vbscript execute

嗨,我有一个名叫start.bat的完美蝙蝠 含有:

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

并且一旦手动打开它就能完美运行,这意味着它会打开hidebat.vbs,这会打开一个最小化的.bat文件,将文件上传到我的云端。因此它已经过验证。

我添加了

pause

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

我希望从excel运行时会出现某种路径约束或环境约束,从而阻止它实际到达有限的环境。

在excel中,我尝试用以下三种方式调用.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文件所在的位置。

1 个答案:

答案 0 :(得分:0)

是的就是这样,路径被命令设置为一些随机/标准/工作/当前路径,所以我不得不添加:

Print #FileNumber, "cd " & path

到excel宏

这样start.bat看起来像:

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

希望这有助于未来的我。