嗨,我有一个名叫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文件所在的位置。
答案 0 :(得分:0)
是的就是这样,路径被命令设置为一些随机/标准/工作/当前路径,所以我不得不添加:
Print #FileNumber, "cd " & path
到excel宏
这样start.bat看起来像:
cd *path*
start *path*\hidebat.vbs
希望这有助于未来的我。