Я запускаю макрос VBA из Word 2013. Я пытаюсь запустить исполняемый файл, для которого требуется параметр/параметр имени файла. Например, c: \ myfilefilter.exe filetobefiltered.htm Я хотел бы использовать Shell Run, потому что я хочу, чтобы код VBA дождался завершения исполняемого файла до возобновления кода VBA. Последние три строки в приведенном ниже коде являются примерами некоторых синтаксисов, которые я пробовал, которые не работают. Я думаю, что проблема заключается в пространстве между исполняемой программой и фильтром. Кто-нибудь знает правильный синтаксис или способ дождаться завершения исполняемой программы. Если вам нужна дополнительная информация, спросите пожалуйста.vba WScript.Shell запустить .exe файл с параметром
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim errorCode As Integer
Dim strProgramName As String
Dim strMyFile As String
Call Shell("""" & strProgramName & """ """ & strMyFile & """", vbNormalFocus, waitOnReturn""")
wsh.Run(strProgramName & """ """ & fileToFilterB & """", vbNormalFocus, waitOnReturn")
wsh.Run "Chr(34)strProgramNameChr(34)strMyFile", waitOnReturn
==================== Код ниже работ. после strCMD первый номер один представляет собой логический toogle 1 показывает окно dos и 0 скрывает поле dos, второе число похоже, 1 ждет завершения программы, прежде чем продолжить код VBA, 0 не ждет.
strCMD = sMyProgram + " " + sMyFile
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
wsh.Run strCMD, 1, 1
Я не знаю ответа, и не имеют хороший способ проверить, но в последней строке вы должны удалить все кавычки и присоединиться Chr (34) и ваши переменные с амперсандами. Я предполагаю, что вы определяете всю эту переменную где-то? – Christina