How to translate a VBA code into Ruby script

Hi all,

I need to use WIN32OLE to do some Excel automation. I read some
documents and search google.The examples of how to use WIN32OLE are
almost the same. But none of them show how to translate a VBA code into
Ruby. Here are the VBA codes:

Sub AddNew()
Set NewBook = Workbooks.Add
With NewBook
.Title = “All Sales”
.Subject = “Sales”
.SaveAs Filename:=“Allsales.xls”
End With
End Sub

And here are some Ruby codes:
require ‘win32ole’

excel=WIN32OLE.new(‘Excel.Application’)
workbook=excel.Workbooks.Add
worksheet=workbook.Worksheets.Add

I wonder if any expert out there could give me an example on how to
translate Title, Subject, and SaveAs Filename into to Ruby codes.

Thanks,

Li

On 11/20/06, Li Chen [email protected] wrote:

    .Title = "All Sales"
    .Subject = "Sales"
    .SaveAs Filename:="Allsales.xls"
End With

End Sub

And here are some Ruby codes:
require ‘win32ole’

excel=WIN32OLE.new(‘Excel.Application’)
#Set NewBook = Workbooks.Add
newbook=excel.Workbooks.Add
#With NewBook

.Title = “All Sales”

newbook.Title = “All Sales”

.Subject = “Sales”

newbook.Subject = “Sales”

.SaveAs Filename:=“Allsales.xls”

newbook.SaveAs Filename => “Allsales.xls”

or

newbook[‘Title’] = “All Sales”
newbook[‘Subject’] = “Sales”
newbook.SaveAs Filename => “Allsales.xls”

please read http://ruby-doc.org/docs/ProgrammingRuby/html/win32.html
and http://ruby-doc.org/stdlib/libdoc/win32ole/rdoc/index.html

Hi Jan,

Thank you very much. I think I am on the right track now.

Li

Set NewBook = Workbooks.Add

excel=WIN32OLE.new(‘Excel.Application’)
#Set NewBook = Workbooks.Add
newbook=excel.Workbooks.Add
#With NewBook

.Title = “All Sales”

newbook.Title = “All Sales”

.Subject = “Sales”

newbook.Subject = “Sales”

.SaveAs Filename:=“Allsales.xls”

newbook.SaveAs Filename => “Allsales.xls”

I expect you can also do:
newbook=excel.Workbooks.Add
newbook.instance_eval do
Title = “All Sales”
Subject = “Sales”
SaveAs = Filename:=“Allsales.xls”
end

:slight_smile: But I’m guessing. I’d be interested to know if it works, but it would
be a closer mapping to VB’s “with” expression.