[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

How to get value of constants in Excel using WIN32OLE

Li Chen

12/1/2006 4:05:00 AM

Hi all,

I have a script to store all Excel constants in an array. ButI can't
return the value for each constant. By using "inspect" method I think
all the constants in the array are turn into a string. The only chance I
can get the value of a constant is that I run the script to print out
all the constants and then add a line outside the array

puts Excel_Const::XlYDMFormat => return a value of 8

which is so inefficient!

I also notice that the line below will return a string

puts "Excel_Const::XlYDMFormat" => return a string as
Excel_Const::XlYDMFormat

I want to print out the values for all the constants at once. I wonder
if any expert out there can give me a hand.

Thank you in advnace,

Li

######
equire 'win32ole'
require 'enumerator'

module Excel_Const
end

excel=WIN32OLE.new('Excel.Application')
WIN32OLE.const_load(excel, Excel_Const)

array=Array.new
Excel_Const.constants.each{|c| array<<c}

count=0
array.sort!.each_slice(5) do |slice|
slice.each do |con|
v="Excel_Const::"+"#{con}"
puts v.inspect
count+=1
end
end

puts "The value is\t", Excel_Const::XlYDMFormat

puts "The total constants are ", count

##output
>ruby consts.rb
"Excel_Const::CONSTANTS"
"Excel_Const::Xl24HourClock"
"Excel_Const::Xl3DArea"
"Excel_Const::Xl3DAreaStacked"
...
"Excel_Const::XlYDMFormat"
...

The value is
8
The total constants are
1387

>Exit code: 0

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

2 Answers

Jano Svitok

12/1/2006 8:33:00 AM

0

On 12/1/06, Li Chen <chen_li3@yahoo.com> wrote:
> Hi all,
>
> I have a script to store all Excel constants in an array. ButI can't
> return the value for each constant. By using "inspect" method I think
> all the constants in the array are turn into a string. The only chance I
> can get the value of a constant is that I run the script to print out
> all the constants and then add a line outside the array
>
> puts Excel_Const::XlYDMFormat => return a value of 8
>
> which is so inefficient!
>
> I also notice that the line below will return a string
>
> puts "Excel_Const::XlYDMFormat" => return a string as
> Excel_Const::XlYDMFormat
>
> I want to print out the values for all the constants at once. I wonder
> if any expert out there can give me a hand.
>
> Thank you in advnace,
>
> Li
>
> ######
> equire 'win32ole'
> require 'enumerator'
>
> module Excel_Const
> end
>
> excel=WIN32OLE.new('Excel.Application')
> WIN32OLE.const_load(excel, Excel_Const)
>
> array=Array.new
> Excel_Const.constants.each{|c| array<<c}
>
> count=0
> array.sort!.each_slice(5) do |slice|
> slice.each do |con|
> v="Excel_Const::"+"#{con}"
> puts v.inspect
> count+=1
> end
> end
>
> puts "The value is\t", Excel_Const::XlYDMFormat
>
> puts "The total constants are ", count
>
> ##output
> >ruby consts.rb
> "Excel_Const::CONSTANTS"
> "Excel_Const::Xl24HourClock"
> "Excel_Const::Xl3DArea"
> "Excel_Const::Xl3DAreaStacked"
> ...
> "Excel_Const::XlYDMFormat"
> ...
>
> The value is
> 8
> The total constants are
> 1387
>
> >Exit code: 0

See programming ruby, especially the chapter on reflection. THe
interesting methods are: Module#constants, Module#const_get

Li Chen

12/1/2006 2:43:00 PM

0

Jan Svitok wrote:
> On 12/1/06, Li Chen <chen_li3@yahoo.com> wrote:
>> which is so inefficient!
>>
>> WIN32OLE.const_load(excel, Excel_Const)
>> end
>> "Excel_Const::Xl3DArea"
>> >Exit code: 0
> See programming ruby, especially the chapter on reflection. THe
> interesting methods are: Module#constants, Module#const_get



Thanks Jan. I haven't touch this chapter yet but I will take a look at
them. BTW could you browse my last post about "VBA to Ruby code again"?
I change every constants into the required format and Ruby still
complains the script.


Li

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