Страницы: 1
RSS
WSL, Shell, VBA, проблема запуска программы через WSL
 
Уважаемые форумчане, столкнулся с проблемой, не могу запустить программу через VBA.
Вот код:
Код
Public Sub WSL()
Dim ProgramName, Arguments, Commands As String
ProgramName = "wsl.exe"
Arguments = "--cd /mnt/d/test/"
Commands = "dos2unix test.txt"
Call Shell(ProgramName & " " & Arguments & " " & Commands, vbNormalFocus)
End Sub
Не работает Commands - то есть не запускается программа. Окно очень быстро закрывается, но видно частично, что пишет "command no found"
Как правильно запустить? dos2unix написан для примера, запускается другая программа
Изменено: Ал Пр - 25.07.2022 16:24:51
 
Запуск приложений из excel
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
  Запуск приложений из excel  
А что там может мне помочь? Я же примерно тоже и делаю. Просто Программа то внутри. Linux, поэтому WSL, а не CMD, мне надо понять как мне записать , чтобы она запускалась., на примере dos2unix
 
Цитата
Александр Прокошин написал:
Как правильно запустить?
Укажите wsl.exe c полным путем. Если путь содержит пробел(ы), не забудьте про двойные кавычки.
Изменено: sokol92 - 25.07.2022 21:02:51
Владимир
 
Цитата
написал:
Цитата
Александр Прокошин написал:
Как правильно запустить?
Укажите wsl.exe c полным путем. Если путь содержит пробел(ы), не забудьте про двойные кавычки.
WSL запускается, не запускается dos2unix , полный путь и к нему прописывал.
 
Смог запустить, но возник другой вопрос

Вот код который работает и запускает программу в самой wsl и по завершение wsl закрывается
Код
Dim ProgramName, Arguments, Commands As String
ProgramName = "wsl"
Arguments = "--cd /mnt/d/1-Project/_Cycle/"
Commands = "bash -li -c ./mpi4.sh"
Call Shell(ProgramName & " " & Arguments & " " & Commands, vbNormalFocus)
Но мне теперь нужно, чтобы VBA знал, когда происходит закрытие WSL
Я попробовал написать вместо
Код
Call Shell(ProgramName & " " & Arguments & " " & Commands, vbNormalFocus)
вот это
Код
Set WshShell = CreateObject("WScript.Shell").Exec(ProgramName & " " & Arguments & " " & Commands)
While WshExec.Status = 0
Wend
Происходит запуск wsl, но запуск программы не происходит. Подскажите в чем дело? Если дело в том, что стоит в скобках Exec(), то подскажите как исправить, так как я не представляю как там должно быть написано правильно

При использовании
Код
commandLine = ProgramName & " " & Arguments & " " & Commands
Set WslShell = CreateObject("WScript.Shell")
WslShell.Run commandLine
программа запускается, а как отследить завершение процесса?
Изменено: Ал Пр - 30.08.2022 12:40:42
 
Метод Run имеет параметр WaitOnReturn, который позволяет дождаться завершения.
Владимир
 
Что у нас с названием темы?
 
Цитата
написал:
Метод  Run  имеет параметр WaitOnReturn, который позволяет дождаться завершения.
Спасибо!! Разобрался
Код
commandLine = ProgramName & " " & Arguments & " " & Commands
Set WslShell = CreateObject("WScript.Shell")
WslShell.Run commandLine, 1, True
Изменено: Ал Пр - 30.08.2022 13:25:10
Страницы: 1
Наверх