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