[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Help with correct syntax in win32ole and excel

Li Chen

11/12/2006 3:19:00 PM

Hi all,

I want to use win32ole to do some automation with excel. Here is a line
code
which works.
...
ChartTypeVal=4
excel.Range("a1:b3").Select();
excelchart = workbook.Charts.Add();
excelchart.Type = ChartTypeVal;
...

I check Excel documentation: ChartTypeVal=4 is to draw a graph with
line and the name for this graph type is called xlLine. But when I
replace number 4 with name "xlLine" the script doesn't work. Which
syntax is used so that Ruby knows xlLine instead of number 4?

Thank you in advance,

Li



--
Posted via http://www.ruby-....

4 Answers

Jano Svitok

11/12/2006 5:10:00 PM

0

On 11/12/06, Li Chen <chen_li3@yahoo.com> wrote:
> Hi all,
>
> I want to use win32ole to do some automation with excel. Here is a line
> code
> which works.
> ...
> ChartTypeVal=4
> excel.Range("a1:b3").Select();
> excelchart = workbook.Charts.Add();
> excelchart.Type = ChartTypeVal;
> ...
>
> I check Excel documentation: ChartTypeVal=4 is to draw a graph with
> line and the name for this graph type is called xlLine. But when I
> replace number 4 with name "xlLine" the script doesn't work. Which
> syntax is used so that Ruby knows xlLine instead of number 4?
>
> Thank you in advance,
>
> Li

Try prefixing it with something. I've found at [1] that they refer to it as
Excel.XlChartType.xlLine

So try something similar.

[1] http://msdn2.microsoft.com/en-gb/library/microsoft.office.tools.excel.chart....(VS.80).aspx

Li Chen

11/12/2006 5:44:00 PM

0

Jan Svitok wrote:

>
> Try prefixing it with something. I've found at [1] that they refer to it
> as
> Excel.XlChartType.xlLine
>
> So try something similar.
>
> [1]
> http://msdn2.microsoft.com/en-gb/library/microsoft.office.tools.excel.chart....(VS.80).aspx

Hi,

if I change this line
excelchart.ChartType = ChartTypeVal;

into excelchart.ChartType= excelchart.XlChartType.xlLine

I get the following message:

excel1.rb:37:in `method_missing': unknown property or method
`XlChartType' (WIN32OLERuntimeError)
HRESULT error code:0x80020006
Unknown name. from excel1.rb:37

Li


--
Posted via http://www.ruby-....

Christian Madsen

11/12/2006 8:31:00 PM

0


Li Chen skrev:
> if I change this line
> excelchart.ChartType = ChartTypeVal;
>
> into excelchart.ChartType= excelchart.XlChartType.xlLine
>
> I get the following message:
>
> excel1.rb:37:in `method_missing': unknown property or method
> `XlChartType' (WIN32OLERuntimeError)
> HRESULT error code:0x80020006
> Unknown name. from excel1.rb:37
>
Hi Li and Jan,

Excel.XlChartType.xlLine won't work the same way in Ruby as in Visual
Basic.

The reason is that in the VB example, the constant xlLine in
XlChartType is accessed. In Ruby, constants must start with a capital
e.g. XlLine. This is however not implemented in Win32ole, so you must
load all the constants of the Excel typelibrary into a class or module
of your own:

class ExcelConst
end

WIN32OLE.const_load(excel, ExcelConst)

excelchart.ChartType = ExcelConst.XlLine

Note that xlLine now becomes XlLine.

The first four lines of the example are taken from
http://wiki.rubygarden.org/Ruby/page/show/Scri... which is the
best guide to automating Excel via Ruby that exists.

Rgds,
Christian

Li Chen

11/12/2006 9:13:00 PM

0

Christian Madsen wrote:

> Excel.XlChartType.xlLine won't work the same way in Ruby as in Visual
> Basic.
>
> The reason is that in the VB example, the constant xlLine in
> XlChartType is accessed. In Ruby, constants must start with a capital
> e.g. XlLine. This is however not implemented in Win32ole, so you must
> load all the constants of the Excel typelibrary into a class or module
> of your own:
>
> class ExcelConst
> end
>
> WIN32OLE.const_load(excel, ExcelConst)
>
> excelchart.ChartType = ExcelConst.XlLine
>
> Note that xlLine now becomes XlLine.
>
> The first four lines of the example are taken from
> http://wiki.rubygarden.org/Ruby/page/show/Scri... which is the
> best guide to automating Excel via Ruby that exists.
>
> Rgds,
> Christian


Many thanks to you all.

Here is the wroking script on my XP:
###########
require 'win32ole'

class ExcelConst
end

excel = WIN32OLE.new("Excel.Application")

workbook = excel.Workbooks.Add
excel.Range("a1:b1").Value= [3,10]
excel.Range("a2:b2").Value= [2,6]
excel.Range("a3:b3").Value = [1,3]

excel.Range("a1:b3").Select
excelchart = workbook.Charts.Add
WIN32OLE.const_load(excel, ExcelConst)
excelchart.ChartType = ExcelConst::XlConeCol

savefile='C:\Ruby\self\excel3.xls'
workbook.SaveAs(savefile)
excel.ActiveWorkbook.Close(0)
excel.Quit()

#########
In Ruby constant is accessed as ExcelConst::XlLine but not as
ExcelConst.XlLine.



Li




--
Posted via http://www.ruby-....