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