2014-07-22 72 views
0

我已经搜索了一个解决方案的高和低,但一直没有找到。如何使批处理文件等待Excel宏完成

我有一个批处理文件中,我称之为它调用一个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文件运行,所以我可以使用/等待

  • 告诉JavaScript文件等到宏完成,然后创建一些会触发.bat文件继续的标志。

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

我的.js文件是这样的:

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

任何人都可以提供我怎样才能使.bat文件等待我的Excel宏来完成的建议?

回答

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 
    ) 
) 
+0

我得到批量等待我的Excel宏使用/ WAIT方法运行。现在我需要它来等待在Firefox中运行的iMacro。你的建议听起来很有希望,我会试一试。谢谢! –

+0

对于任何人在搜索时遇到这种情况,我用来使批处理文件等待Excel宏运行的代码是“START”RunExcelScript“/ WAIT cscript.exe RunExcelJScript.js”。 .js文件内容显示在我原来的问题中。 –

+0

那么上面的工作呢? – Valorax

相关问题