如何使batch file等待Excelmacros来完成

我search了一个解决scheme的高和低,但一直没能find一个。

我有一个batch file,我调用一个JavaScript文件,调用一个Excelmacros来运行。 我希望batch file等待macros完成,然后继续。

我使用JavaScript文件来调用Excelmacros,因为我不知道直接从batch file运行macros的方法。 可能有更好的方法,但我一直没能find一个。

在我的.bat文件中,我试过了:

Do some batch stuff, including iMacros WAIT/ cscript.exe RunExcelJScript.js Do some more batch stuff with iMacros 

但它不会等待macros完成之前继续做更多的批次的东西。 我假设这是因为.bat文件实际上只是等待.js文件完成,而不是随后由.js文件打开的Excelmacros。

我知道我可以用超时设定一段等待时间,但是这个macros很复杂,需要花很长时间来运行。

我需要一个方法来:

  • 调用Excelmacros直接从.bat文件运行,所以我可以使用/ WAIT

  • 告诉JavaScript文件等到macros完成,然后创build一个标志,这会触发.bat文件继续。

.bat / .js / Macro将每15分钟运行一次。

我的.js文件是这样的:

 var objXL = WScript.CreateObject("Excel.Application"); objXL.Visible = true; objXL.WorkBooks.Open("FilePathTo/Enrollments.xlsm"); objXL.Run("NameOfExcelModule.UpdateAndExportToMoodle"); 

任何人都可以提供一个build议,如何使.bat文件等待我的Excelmacros完成?

你可以尝试这样的,只要find的imacro任务的名称。 当任务运行时,任务完成时,%ERRORLEVEL%将变为“0”,%ERRORLEVEL%变为“1”,循环结束。

  :loop for /f "tokens=2 delims=: " %%a in ('tasklist ^| find "TaskName.exe"' ) do ( if "%ERRORLEVEL%"=="0" ( ping -n 10 localhost > nul 2>nul goto loop ) )