http://www.perlmonks.org?node_id=412652


in reply to Re^2: Win32::OLE::Const 'Microsoft Excel'
in thread Win32::OLE::Const 'Microsoft Excel'

If you can figure out how to build your charts you can iterate over them using:

#my $ChartObjects=$Sheet->ChartObjects(); foreach my $c (in $Sheet->ChartObjects() ) { #match the $c->Charttitle.Text property against some list? #There is a $c->{CodeName} property too... #Store $Chart->{Name} at creation and check against that? }

To make it easier you could try storing your tables in a format such as:

COLA  | COLB | COLC | COLD | COLE | COLF | COLG | ...
Label | Data |      | Label| Data |      |...
item  | item |      | item | item |      |...
item  | item |      | item | item |      |...
item  | item |      | item | item |      |...
item  | item |      | item | item |      |...
      |      |      |      |      |      | <blank row>
Title | txt  |      |      
Name  | $Chart->{Name}
Blah  |      |      |

Bad diagram... so you have all your tables separated by a column... under your data table is another table with metadata (name, title, xaxis text, y axis text... (cold just be a column)

You know your chart regions start in A1, C1, E1, etc so you select that cell when building and do a Range("E1")->CurrentRegion->Rows->Countto return the number of rows... +2 takes you to the row where your meta data is... you can then either use RANGE("E9") (or whatever) to assign the properties to the chart making it easy to update (not dynamically though) or save info about the chart.

I confused myself there - perhaps it'll help you though.

- Mark