Ruby as excel vba event handler replacement using win32ole?

I've seen Ruby used as a script to save all Word doc files as rtf instead.
Can ruby be used interactively to process events that would usually be
handled in VBA in Excel for example?

Hello,

Can ruby be used interactively to process events that would usually be
handled in VBA in Excel for example?

Does WIN32OLE_EVENT class help you?

require 'win32ole'

def sheet_changed(arg1, arg2)
  p arg1.value
end

excel = WIN32OLE.new("Excel.Application")
excel.visible = true
book = excel.workbooks.Add
ev = WIN32OLE_EVENT.new(book, 'WorkbookEvents')
ev.on_event('SheetChange'){|arg1, arg2|
  sheet_changed(arg1, arg2)
}

book.Worksheets(1).Range("A1").value = 100
book.Worksheets(1).Range("A2").value = 200
book.Worksheets(1).Range("B1").value = 300

···

In message "ruby as excel vba event handler replacement using win32ole?" on 06/01/13, Ammon Christiansen <ammon.christiansen@gmail.com> writes:

Thanks, I'll try that! That is the kind of thing I was looking for - event
handling in Ruby.

···

On 1/16/06, Masaki Suketa <masaki.suketa@nifty.ne.jp> wrote:

Hello,
In message "ruby as excel vba event handler replacement using win32ole?" > on 06/01/13, Ammon Christiansen <ammon.christiansen@gmail.com> writes:

> Can ruby be used interactively to process events that would usually be
> handled in VBA in Excel for example?

Does WIN32OLE_EVENT class help you?

require 'win32ole'

def sheet_changed(arg1, arg2)
  p arg1.value
end

excel = WIN32OLE.new("Excel.Application")
excel.visible = true
book = excel.workbooks.Add
ev = WIN32OLE_EVENT.new(book, 'WorkbookEvents')
ev.on_event('SheetChange'){|arg1, arg2|
  sheet_changed(arg1, arg2)
}

book.Worksheets(1).Range("A1").value = 100
book.Worksheets(1).Range("A2").value = 200
book.Worksheets(1).Range("B1").value = 300