我一直在寻找解决方案,但一直未能找到。
我有一个批处理文件,其中调用了一个 JavaScript 文件,该文件调用 Excel 宏来运行。我希望批处理文件等待宏完成,然后继续。
我使用 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 宏完成的建议吗?
最佳答案
您可以尝试这样的操作,只需找到 imamacro 任务的名称即可。当任务正在运行时,%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
)
)
关于javascript - 如何使批处理文件等待 Excel 宏完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24897487/