如何对Ruby中的Excel事件做出反应?

时间:2009-05-08 13:38:16

标签: ruby excel

我可以找到10 ^ 1000个使用Ruby编写Excel脚本的例子,但我不能为我的生活弄清楚如何让Ruby对Excel中的事件作出反应。我正在尝试在选中时检索工作表中行的内容,但是这样的基于事件的检索我找不到任何方法或示例。

1 个答案:

答案 0 :(得分:1)

使用 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

希望有所帮助。