如何等到我们处理打开的excel并在手动关闭后继续执行ruby代码

时间:2013-04-12 15:29:35

标签: ruby excel win32ole

我试图在Ruby中实现以下内容

  1. 打开Excel

    require 'win32ole'
    
    excel = WIN32OLE.new('Excel.Application')
    worksheet  = application.Workbooks.Open("C:/testing.xlsx").Worksheets("Sheet1")
    excel.visible = true
    
  2. 手动对打开的excel进行必要的更改,我希望ruby程序等到我做这些更改。

  3. 完成必要的更改后,我使用关闭(X)按钮手动关闭该Excel。

  4. ruby​​程序应该继续并继续执行下一步。

1 个答案:

答案 0 :(得分:1)

首先,你在哪里

worksheet  = application.Workbooks.Open("C:/testing.xlsx").Worksheets("Sheet1")

我认为你的意思是

worksheet  = excel.Workbooks.Open("C:/testing.xlsx").Worksheets("Sheet1")

无论如何,您可以检测Excel实例中打开的工作簿数量,以便您可以

while excel.Workbooks.count > 0 do 
    sleep(5)
end

并且您的脚本将坐在那里,无休止地轮询,直到工作簿关闭,然后继续。

请注意,在用户关闭Excel后,Excel的实例仍将无形地运行;你可能想打个电话

excel.Quit
excel.ole_free

清除它。