Как ждать, пока мы будем работать с открытым Excel и продолжить код ruby ​​после его закрытия вручную

Я пытаюсь добиться ниже вещь в 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. Как только необходимые изменения сделаны, я закрываю этот Excel вручную, используя кнопку закрытия (X).

  4. Программа ruby ​​должна продолжиться и продолжить выполнение следующего шага.

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.Quit
excel.ole_free

чтобы очистить это.

Другие вопросы по тегам