Как реагировать на события Excel в Ruby? - PullRequest
1 голос
/ 08 мая 2009

Я могу найти 10 ^ 1000 примеров написания сценариев Excel с использованием Ruby, но я не могу понять, как Ruby реагирует на события в Excel. Я пытаюсь получить содержимое строки на листе, когда она выбрана, но для такого извлечения на основе событий я не могу найти какие-либо методы или примеры.

1 Ответ

1 голос
/ 08 мая 2009

Используйте метод WIN32OLE_EVENT.new для создания объекта события OLE, а затем вызовите его метод on_event . Вызовите метод WIN32OLE_EVENT.message_loop , чтобы запустить цикл мониторинга событий.

Вот пример, который распечатывает значение выбранного диапазона, а затем останавливает мониторинг событий перед сохранением книги:

require 'win32ole'

def exit_event_loop
    $LOOP = false
end

xl = WIN32OLE.connect('Excel.Application')
wb = xl.ActiveWorkbook

ev = WIN32OLE_EVENT.new(wb, 'WorkbookEvents')
ev.on_event('SheetSelectionChange') do
    range = xl.Selection
    puts(range.Value)
    STDOUT.flush
end

ev.on_event('BeforeSave') do
    exit_event_loop
end

$LOOP = true
while $LOOP
    WIN32OLE_EVENT.message_loop
    sleep 0.1
end

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...