簡體   English   中英

從 Excel VBA 宏執行 .bat 文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM