2014-07-22 71 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

相關問題