Jan S. wrote:
Li:
Could you post the whole code as it seems you’ve got the constants
wrong - notice the error appers at the first constant. Where are you
putting them? Kernel? Or did you include the constant module?
Moral of the story: in ruby, all constants start with a capital letter.
Hi Jan,
I post my the whole codes here. Here are some information about my
script:
- read the raw data from a text file and extract the columns I need
into an array 2) calculate the mean and SD 3)transform results of mean
and standard error into a 2D array( each row is a group of exp),
respectively 4) draw the plot using win32ole. (In my current example I
use two arrays, one for each group)
Thanks,
Li
require ‘win32ole’
module ExcelConst
end
#create an excel object and make it visible
excel=WIN32OLE.new(‘Excel.Application’)
#load excel constant
WIN32OLE.const_load(excel, ExcelConst)
#create an excel workbook and make it visible
excel.Visible=TRUE
workbook1=excel.Workbooks.Add
worksheet1=workbook1.Worksheets(1)
#bring worksheet1 to the front
worksheet1.Select
#process data into an array(in my future script)
#fill the data into worksheet1
worksheet1.Range('B1:F1').Value=[1,2,3,4,5] # time points
# mean data
worksheet1.Range('A2:F2').Value=['Group A',100,200,150,200, 200]
#Group A
worksheet1.Range(‘A3:F3’).Value=[‘Group B’, 150,100,80,60,50]
#Group B
# SD data/standard deviation
worksheet1.Range(‘A5:F5’).Value=[‘Group A’, 10,15,20,10,30] # SD for
Group A
worksheet1.Range(‘A6:F6’).Value=[‘Group B’,20,13,40,20,10] # SD for
Group B
#add a chart
worksheet1.Range(‘A8’).Select
chart1=excel.Charts.Add
#chart1.Type=ExcelConst::XlLine
chart1.ChartType=ExcelConst::XlLineMarkers
chart1.SetSourceData Source=worksheet1.Range(“A1:F3”)
#chart specifications
chart1.PlotBy=ExcelConst::XlRows #plot by rows
#chart1.PlotBy=1 #plot by rows
#chart1.PlotBy=0 #plot by columns
#chart1.Location Where=ExcelConst::XlLocationAsObject
chart1.HasTitle =“True”
chart1.ChartTitle.Characters.Text = “Chart1”
chart1.Axes(ExcelConst::XlCategory, ExcelConst::XlPrimary).HasTitle =
“True”
chart1.Axes(ExcelConst::XlCategory,
ExcelConst::XlPrimary).AxisTitle.Characters.Text = “Day”
chart1.Axes(ExcelConst::XlValue, ExcelConst::XlPrimary).HasTitle =
“True”
chart1.Axes(ExcelConst::XlValue,
ExcelConst::XlPrimary).AxisTitle.Characters.Text = “cpm”
add SD error bars
chart1.SeriesCollection(1).Select
chart1.SeriesCollection(1).HasErrorBars = “True”
chart1.SeriesCollection(1).ErrorBar Direction=xlY
chart1.Include=xlBoth
chart1.Type=xlCustom
chart1.Amount="=Sheet1!R5C2:R5C6"
chart1.MinusValues="=Sheet1!R5C2:R5C6"
chart1.SeriesCollection(2).Select
chart1.SeriesCollection(2).HasErrorBars = “True”
chart1.SeriesCollection(2).ErrorBar Direction=xlY
chart1.Include=xlBoth
chart1.Type=xlCustom
chart1.Amount="=Sheet1!R6C2:R6C6"
chart1.MinusValues="=Sheet1!R6C2:R6C6"
#save workbook
path=‘C:\Ruby\self\win32\macro-1.xls’
workbook1.Saveas(path)
#close workbook
workbook1.Close()
#ending session
excel.Quit
excel=nil
GC.start
ruby macro1.rb
macro1.rb:61: undefined local variable or method `xlY’ for main:Object
(NameError)
Exit code: 1