2016-06-20 2 views
1

У меня есть test.bat файл содержит скрипт:Run летучая файл из Excel с помощью VBA

copy host_name table_name -p table_name -t "file.csv" 

Обычно, когда я нажимаю на него, он работает нормально. Теперь я хочу запустить файл test.bat из Excel с помощью vba.

strPath = ws1.Range("G2").value & "\" 'Directory to folder with bat 
Shell strPath & "\test.bat", vbNormalFocus 

что-то не так, потому что я вижу только снимок/клип: как-то открываются и закрываются в одну секунду ...

+0

Иногда это может быть трудно читать выход из пакетного файла, так как они могут закрыть очень быстро. Вы можете добавить команду [pause] (https://technet.microsoft.com/en-gb/library/bb490965.aspx) в конец вашего скрипта. Это предотвратит закрытие окна, пока вы не нажмете клавишу. Или вы можете перенаправить [вывод в файл журнала] (http://stackoverflow.com/questions/20484151/redirecting-output-from-within-batch-file). В любом случае это должно позволить вам фиксировать любые сообщения об ошибках, возвращаемые вашей партией. –

+2

У вас есть две обратные косые черты, когда построена строка? – ThunderFrame

+0

Да, обратная косая черта в strPath – 4est

ответ

2

просто решить его:

ChDir ThisWorkbook.Path & "\folder\" 
Shell ThisWorkbook.Path & "\folder\test.bat", vbNormalFocus 
0

я не уверен, с помощью VBA и оболочки вы используете, но попробовать что-то вроде этого

Dim winShell As Object: Set winShell = CreateObject("WScript.Shell") 

    Dim WaitOnReturn As Boolean: WaitOnReturn = False 
    Dim windowStyle As Integer: windowStyle = 1 

    'Run the desired pair of shell commands in command prompt. 
    Call winShell.Run("cmd /k " & command1 & " & " & command2, windowStyle, WaitOnReturn) 

    'Release pointer to the command prompt. 
    Set winShell = Nothing 

просто заменить мои команды с командой (ами) и позволяет увидеть, если его работы

редактировать: только для завершения мои команды выглядит следующим образом

Dim command1 As String: command1 = "cd /d" & projectDirectoryCell.Value 

Dim command2 As String: command2 = "create_sensi.bat" 
+0

Я попытался сделать command1 = "..cd", но оболочка всегда отображается: C: \ users \ my_user \ documents> Как изменить корневой каталог? – 4est

+0

@ 4est так же, как в стандартной строке cmd, например 'cd/d 'C: \ Program Files" 'например –

Смежные вопросы