2016-08-31 1 views
0

У меня есть файл bat, который запускается и запускает тестовый инструмент молча. Дважды щелкните вручную, файл bat сделает все, что ему нужно. Теперь я пишу макрос VBA, который должен выполнить файл bat, но макрос просто открывается и сразу же закрывает его. найдите макрокоманду.VBA-макросы, не исполняющие файл bat

Sub Macro1() 
Dim WshShell As Object 
Set WshShell = VBA.CreateObject("WScript.Shell") 
WshShell.CurrentDirectory = Trim(CStr(Excel.Sheets("Sheet1").Cells(1, 1))) 
Output = WshShell.Run("Command.bat", 1, True) 
End Sub 

В ячейке (1,1) на листе есть каталог, в котором присутствует файл command.bat. Что я делаю?

+1

Вы пытались выполнить его как выход = WshShell.Run ("C: \ Mypath \ Command.bat", 1, True) только для проверки * .bat файл? – duDE

+0

Да, я сделал, и это дает мне ошибку «Ошибка запуска объекта оболочки не удалось» –

+0

У вас есть соответствующие разрешения для запуска командного файла в целевом каталоге? – Comintern

ответ

0

Как насчет того, чтобы попробовать это так? Я тестировал это в локальном файле bat, и он отлично подходит для меня.

Dim Foldername As String 
Foldername = "C:\WorkspaceRFT\RMS\command.bat" 
Shell "C:\WINDOWS\explorer.exe """ & Foldername & "", vbNormalFocus 
+0

Спасибо Кьеру, это работает и для меня! –

0

Попробуйте следующее. Как уже упоминалось, создание пути к переменной немного затруднительно, особенно когда ваш путь к файлу имеет пробел. Использование Chr(34) для представления " хорошо работает здесь.

Sub Macro1() 
    Dim WshShell As Object: Set WshShell = CreateObject("WScript.Shell") 
    Dim MyPath as String: MyPath = Trim(CStr(Sheets("Sheet1").Cells(1, 1))) 
    Output = WshShell.Run(Chr(34) & myPath & "\Command.bat" & Chr(34), 1, True) 
End Sub 
+0

Привет, Райан, Это тоже не помогает, такая же проблема с этим кодом. –

+0

Какова была ценность 'output'? Вы получили сообщение об ошибке? Делает ли 'Debug.Print Chr (34) & myPath &" \ Command.bat "& Chr (34)' соответствие пути к файлу .Bat? –

+0

Привет, Райан, в этом нет ошибки. Он открывает cmd и немедленно закрывает его. Cant действительно видел, были ли загружены команды, написанные в .bat-файле. И да, путь, упомянутый в коде, правильный. Когда файл bat запускается, он должен открыть инструмент тестирования RFT, загрузить тестовый скрипт и выполнить его (это происходит, когда я вручную дважды нажимаю исполняемый файл bat). –