Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   crear un grafico en excel 2007 desde Delphi 2007 (https://www.clubdelphi.com/foros/showthread.php?t=84876)

Jose Manuel 18-12-2013 18:22:02

crear un grafico en excel 2007 desde Delphi 2007
 
Hola estoy intentando crear un grafico en EXCEL2007 utilizando DELPHI2007, y me da un error al llegar a la siguiente instrucción
Código Delphi [-]
ChartObj.Chart.SeriesCollection.Item[1].Xvalues := RangeX;
El código funciona bien en EXCEL 2003, pero no en EXCEL 2007. He cambiado esta instrucción por otras pero sigue sin funcionarme.

Os adjunto el código que estoy utilizando.

Espero que podais ayudarme.

Un saludo
Jose Manuel García.
Código Delphi [-]
procedure Tfresumen.Button1Click(Sender: TObject);
var
 XLApp, Sheet, ChartObj : Variant;
 rangeX, RangeY: OleVariant; // tambien he puesto Variant
 NumPlan:Integer;
begin
XLApp:= CreateOleObject('Excel.Application');
XLApp.Visible := True;
NumPlan:=0;
if (NumPlan=0) then
XLApp.Workbooks.Add(xlWBatWorkSheet)
else
XLApp.Workbooks[1].Sheets.Add(,XLApp.Workbooks[1].Sheets[NumPlan],1,xlWorkSheet);

Sheet := XLApp.Workbooks[1].WorkSheets[1];
Sheet.Cells[1, 1] := 'jan/08';
Sheet.Cells[2, 1] := 'feb/08';
Sheet.Cells[3, 1] := 'mar/08';

Sheet.Cells[1, 2] := '1.1';
Sheet.Cells[2, 2] := '1.2';
Sheet.Cells[3, 2] := '1.3';

Sheet.ChartObjects.Add(100,50,400,250);
ChartObj := Sheet.ChartObjects(1);
ChartObj.Chart.ChartType := xlLine;
RangeY := Sheet.Range['B1:B3'];
RangeX := Sheet.Range['A1:A3'];
ChartObj.Chart.SeriesCollection.Add(RangeY);

//---------------------------------------------------------------
ChartObj.Chart.SeriesCollection.Item[1].Xvalues := RangeX;
// error: no se ha encontrado el miembro;
//---------------------------------------------------------------
//ChartObj.Chart.SeriesCollection(1).Xvalues := RangeX;
// error: los tipos no coinciden;
//---------------------------------------------------------------
//ChartObj.Chart.SeriesCollection.Item(1).Xvalues := RangeX;
// error: los tipos no coinciden;
//---------------------------------------------------------------
//ChartObj.Chart.SeriesCollection.Item(1).Xvalues := 'Un texto string';
// error: OLE error800a03EC
//---------------------------------------------------------------
end;

Jose Manuel 27-12-2013 19:56:30

Parece que al final he encontrado la solución, faltaba añadir la palabra value al final. En todos los ejemplos que he visto en Internet viene sin ella y eso fue lo que me confundio.

Código Delphi [-]
RangeX := Sheet.Range['A12:A15'].value;


La franja horaria es GMT +2. Ahora son las 05:48:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi