[英]Execute .bat file from Excel VBA Macro
我的 excel vba 宏有問題。 我需要它來執行與 Excel 工作簿位於同一文件夾中的批處理文件。 代碼有時運行良好。 我不知道是什么導致了錯誤。 這是代碼:
Sub writebatch()
Sheets("code").Select
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:=ThisWorkbook.path & "\code.bat",
FileFormat:=xlTextPrinter, CreateBackup:=False
Application.DisplayAlerts = True
ThisWorkbook.Saved = True
Shell "cmd.exe /k cd " & ThisWorkbook.path & "&&code.bat"
Application.Quit
End Sub
它寫入批處理文件,但不執行它。 只有當我讓命令窗口沒有關閉時,它才說找不到 code.bat 文件。 所以changedir 命令起作用了。 是否可以運行cmd.exe並使用相對路徑運行code.bat而無需更改?
首先,在啟動CMD實例時,如果使用任何類型的運算符(&),則需要將整個CMD參數括起來:
CMD /K "command1 & command2"
然后將子內部參數括起來,如下所示:
CMD /K "command "path with spaces" & command"
因此,您需要執行以下操作:
Shell "cmd.exe /k ""cd " & """ & ThisWorkbook.path & """ & " && code.bat"""
請注意,我已經使用“”“轉義了引號,但是我不知道在VBA中轉義引號的方法。
PS:請記住,如果有空格,請也將code.bat括起來 ,但只有空格時才應將其括起來 。
我很確定問題出在這一行
Shell "cmd.exe /k cd " & ThisWorkbook.path & "&&code.bat"
您需要在&&
前面加一個空格,以將其與cd
命令分開,並在其后加一個空格,以使其與code.bat
。
Shell "cmd.exe /k cd " & ThisWorkbook.path & " && code.bat"
Shell“ cmd.exe / k cd / d”和ThisWorkbook.path和“ && code.bat”
在這里,沒有/ d cmd將在文檔文件夾中打開。 通過/ d,它將在d驅動器中打開,您可以根據自己的需要更改它。
一種將quote(“)插入字符串的方法是使用字符代碼轉換函數Chr(34),其中34是quotes(”)的ASCII值。
我希望它對你有用。
Dim sfilename, fileName As String
Sub Run_file_bat()
fileName = "" & ThisWorkbook.Path & "\code.bat" & ""
VBA.Shell "Explorer.exe " & fileName, vbNormalFocus
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.