我已经搜索过高低的解决方案,但是找不到解决方案。
我有一个批处理文件,我在其中调用一个调用Excel宏来运行的JavaScript文件。我希望批处理文件等待宏完成,然后继续。
我使用JavaScript文件调用Excel宏,因为我不知道直接从批处理文件运行宏的方法。这可能是更好的方式,但我还没有找到一个。
在我的.bat文件中,我尝试过:
Do some batch stuff, including iMacros
WAIT/ cscript.exe RunExcelJScript.js
Do some more batch stuff with iMacros
但在继续做更多批处理之前,它不会等待宏完成。我假设它是因为.bat文件实际上只是等待.js文件完成,而不是随后由.js文件打开的Excel宏。
我知道我可以使用超时来设置一段特定的等待时间,但宏非常复杂,需要很长的时间才能运行。
我需要一种方法来实现:
调用Excel宏直接从.bat文件运行,这样我就可以使用/ WAIT
告诉JavaScript文件等待宏完成,然后创建某种类型的标志,触发.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");
有人能提出如何让.bat文件等待我的Excel宏完成的建议吗?
答案 0 :(得分:1)
您可以尝试这样的事情,只需找到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
)
)