Выполнять.bat-файл из макроса Excel VBA
У меня проблема с моим макросом 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
Он записывает пакетный файл, но затем не выполняет его. Только однажды я получил командное окно, чтобы не закрываться, и он сказал код.файл bat не удалось найти. Так что команда changedir сработала. Можно ли запустить cmd.exe и запустить код.летучая мышь с родственником путь без необходимости менять его?
4 ответов:
Во-первых, при запуске экземпляра CMD необходимо вложить весь аргумент CMD, если вы используете операторы любого типа (&):
CMD /K "command1 & command2"И затем вложите суб-внутренние аргументы, например:
CMD /K "command "path with spaces" & command"Итак, вам нужно сделать что-то вроде этого:
Shell "cmd.exe /k ""cd " & """ & ThisWorkbook.path & """ & " && code.bat"""Обратите внимание, что я использовал""", чтобы избежать цитаты, но я не знаю, как избежать цитаты в VBA.
PS: Не забудьте также вложить код .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.путь & " & & код.летучая мышь "
Здесь, без /d cmd откроется в папке document. by /d он откроется в диске d, вы можете изменить это в соответствии с вашим easy.
Один из способов вставить кавычку (") в строку заключается в использовании функции преобразования символьного кода Chr (34), 34 является значением ASCII для кавычек (")
Comments