Why this script doesn't work?

Hi all,

I copy a script from WIN32OLE documentation and run it. I find that Ruby
complains it at line cells = sheets.cells(“A1:A5”).

Do I miss something?

Thanks,

Li

require ‘win32ole’

excel = WIN32OLE.new(‘Excel.Application’)
excel.Visible=“True”

book = excel.workbooks.add
sheets = book.worksheets(1)

cells = sheets.cells(“A1:A5”)

cells.each do |row|
row.value = 10
end

##output

ruby test3.rb
test3.rb:13:in `method_missing’: cells (WIN32OLERuntimeError)
OLE error code:80020005 in

HRESULT error code:0x80020009
Exception occurred. from test3.rb:13
Exit code: 1

Li Chen wrote:

Hi all,

I copy a script from WIN32OLE documentation

Where is the Win32OLE documentation located, please? That way, others
can
confirm your effort and duplicate your experiment (if they are running
Windows).

here are some win32ole doc:

http://www.ruby-doc.org/stdlib/libdoc/win32ole/rdoc/index.html

http://www.ruby-doc.org/stdlib

2006/12/4, Paul L. [email protected]:

Li Chen wrote:

cells = sheets.cells(“A1:A5”)

Try:
cells = sheets.Range(“A1:A5”)

Cheers
Chris

Paul L. wrote:

Where is the Win32OLE documentation located, please? That way, others
can
confirm your effort and duplicate your experiment (if they are running
Windows).

It is here

http://www.ruby-doc.org/stdlib/

WIN32OLE#each{|i|…} or each(WIN32OLE)in Methods section

Iterates over each item of OLE collection which has IEnumVARIANT
interface.

excel = WIN32OLE.new(‘Excel.Application’)
book = excel.workbooks.add
sheets = book.worksheets(1)
cells = sheets.cells(“A1:A5”)
cells.each do |cell|
cell.value = 10
end

Li