Excel OLE i Perl - problemer med xvalues, values og name
Jeg har skrev den efterfølgende kode i Visual Basic for Applications. Min opgave er at få oversat koden til PERL. Det har jeg så gjort og det ses i den næste kodestump. PERL koden kan jeg dog ikke få til at virke. Linje 13, 14 og 15 giver ved oversættelsen fejl. Jeg har prøvet at skrive linjerne på mange forskellige måder, og har nu fået den rettet til så det vidst kun er syntaxfejl. Programmet er et testprogram som åbner et eksisterende Exceldokument der har en graf og nogle data i forvejen. Programmet skal så koble grafen og dataene sammen vha. setSourceData, XValues, Values og Name.Hvad skal jeg gøre ved linje 13, 14 og 15 for at få koden til at virke i PERL? Hvad er den virkende syntax?
Koden i VBA:
Dim xlApp As Application ' Erklær variablen til referencen.
Dim xlWorkbook As Workbook
Dim xlSheet As Worksheet
Dim xlChartObject As ChartObject
Dim xlChart As chart
Dim xlSeries As Series
Dim dmain As String
Dim datarange As Range
dmain = "C:\INVOICEMAKER"
Set xlApp = CreateObject("excel.application")
Set xlWorkbook = xlApp.Workbooks.Open(dmain & "\test1.xls")
Set xlSheet = xlWorkbook.Worksheets(1)
Set xlChartObject = xlSheet.ChartObjects(1)
Set xlChart = xlChartObject.chart
Set datarange = xlSheet.Range("E5:P8")
xlChart.SetSourceData Source:=datarange
Set xlSeries = xlChart.SeriesCollection(1)
xlSeries.XValues = xlSheet.Range("E5:P5")
xlSeries.Values = xlSheet.Range("E6:P6")
xlChart.SeriesCollection(1).name = "=ark1!R6C4"
xlApp.Visible = True
Koden i PERL:
1 use Win32::OLE qw(in with);
2 use strict;
3 $Win32::OLE::Warn = 3;
4 my $MAINDIR ="C:\\INVOICEMAKER";
5 my $xlApp = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
6 my $xlWorkbook = $xlApp->Workbooks->Open($MAINDIR."\\test1.xls");
7 my $xlSheet = $xlWorkbook->Worksheets(1);
8 my $xlChartObject = $xlSheet->ChartObjects(1);
9 my $xlChart = $xlChartObject->chart();
10 my $datarange = $xlSheet->Range("E5:P8");
11 #$xlChart->setSourceData->{Source}=$datarange;
12 $xlChart->setSourceData($datarange);
13 my $xlSeries = $xlChart->SeriesCollection(1);
14 $xlSeries->XValues =$xlSheet->Range("E5:P5");
15 $xlSeries->Values =$xlSheet->Range("E6:P6");
16 $xlSeries->Name = "=ark1!R6C4";
