javascript - 如何使批处理文件等待 Excel 宏完成

标签 javascript excel vba batch-file imacros

我一直在寻找解决方案,但一直未能找到。

我有一个批处理文件,其中调用了一个 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/

相关文章:

javascript - 2D渲染处理P5

javascript - 结合旧的和新的设置

javascript - 通过 javascript 清除浏览器缓存和历史记录并加载最新的 js 文件

c# - 使用 OLEDB 导入 Excel 不引入折叠组

vba - 请修复 VBA 错误

C# Excel 下拉事件

javascript - 如何调试事件处理程序?

Excel =CELL ("color",[单元格]) 函数

javascript - VBA 抓取 JavaScript 生成的内容

excel - 在 Mac OS X 上循环浏览文件夹中的文件 - VBA Excel 2011