PDA

Ver la Versión Completa : Guardar un fichero Excel


auxifs
04-06-2003, 17:52:50
Tengo abierta una hoja excel con todos los datos que necesito, pero no se como guardarla en disco. El codigo que tengo es este:
¿Alguien me puede decir como guardar el documento excel en el disco con el nombre que yo quiera?

Lcid:= GetUserDefaultLCID;
If CodInf=1 Then
Begin
C:= 4; //CANTIDAD DE COLUMNAS

CH:= 1; // Número de hojas
ExcelApp.Visible[Lcid]:= False;
ExcelApp.Caption:= 'Estadistica de Envios';

ExcelBook.ConnectTo(ExcelApp.Workbooks.Add(1, Lcid));
WS.ConnectTo(ExcelBook.Worksheets[1] as _Worksheet);
WS.Activate(Lcid);
if CH = 1 then WS.Name:= 'PRUEBA';

ExcelApp.ScreenUpdating[Lcid]:= False;
WS.ConnectTo(ExcelBook.Worksheets[1] as _Worksheet);
WS.Activate(Lcid);
WS.Range[WS.Cells.Item[1, 1],WS.Cells.Item[1, 1]].Value2:='DELEGACION';
WS.Range[WS.Cells.Item[1, 2],WS.Cells.Item[1, 2]].Value2:='ENV.NACIONALES';
WS.Range[WS.Cells.Item[1, 3],WS.Cells.Item[1, 3]].Value2:='ENV.REGIONALES';
WS.Range[WS.Cells.Item[1, 4],WS.Cells.Item[1, 4]].Value2:='ENV.PROPIOS';

//ACTIVAR LA HOJA NRO. 1:
WS.ConnectTo(ExcelBook.Worksheets[1] as _Worksheet);
WS.Activate(Lcid);

ADOInf1.Close;
ADOInf1.SQL.Clear;
ADOInf1.SQL.Add('Select * from DELEGACIONES ' +
'where CenReg=' + IntToStr(CodCR) );
ADOInf1.Open;
I:=2;
While not ADOInf1.Eof Do
Begin
ADOselect.Close;
ADOselect.SQL.Clear;
ADOselect.SQL.Add('Select count(*) cuantos from ENVIOS ' +
'where ageorig=' + '''' + ADOInf1.FieldByName('CodAge').Asstring + '''' +
' and tipenv=' + '''' + '3' + '''' +
' and fecha=' + '''' + '02/06/03' + '''');
ADOselect.Open;
WS.Range[WS.Cells.Item[I, 1],WS.Cells.Item[I, 1]].Value2:=ADOInf1.FieldByName('CodAge').Asstring + ' - ' + ADOinf1.FieldByName('NomAge').Asstring;
WS.Range[WS.Cells.Item[I, 2],WS.Cells.Item[I, 2]].Value2:=ADOselect.FieldByName('cuantos').Asstring;
ADOselect.Close;
ADOselect.SQL.Clear;
ADOselect.SQL.Add('Select count(*) cuantos from ENVIOS ' +
'where ageorig=' + '''' + ADOInf1.FieldByName('CodAge').Asstring + '''' +
' and tipenv=' + '''' + '2' + '''' +
' and fecha=' + '''' + '02/06/03' + '''');
ADOselect.Open;
WS.Range[WS.Cells.Item[I, 3],WS.Cells.Item[I, 3]].Value2:=ADOselect.FieldByName('cuantos').Asstring;
ADOselect.Close;
ADOselect.SQL.Clear;
ADOselect.SQL.Add('Select count(*) cuantos from ENVIOS ' +
'where ageorig=' + '''' + ADOInf1.FieldByName('CodAge').Asstring + '''' +
' and tipenv=' + '''' + '1' + '''' +
' and fecha=' + '''' + '02/06/03' + '''');
ADOselect.Open;
WS.Range[WS.Cells.Item[I, 4],WS.Cells.Item[I, 4]].Value2:=ADOselect.FieldByName('cuantos').Asstring;
ADOInf1.Next;
Application.ProcessMessages;
I:=I+1;
End;
WS.Range[WS.Cells.Item[I, 1],WS.Cells.Item[I, 1]].Value2:='TOTAL: ';
sumanac:=0;
sumareg:=0;
sumaprop:=0;
FOR I:=2 TO I-1 DO
Begin
sumanac:=sumanac + StrToInt(WS.Range[WS.Cells.Item[I, 2],WS.Cells.Item[I, 2]].Value2);
sumareg:=sumareg + StrToInt(WS.Range[WS.Cells.Item[I, 3],WS.Cells.Item[I, 3]].Value2);
sumaprop:=sumaprop + StrToInt(WS.Range[WS.Cells.Item[I, 4],WS.Cells.Item[I, 4]].Value2);
End;
WS.Range[WS.Cells.Item[I, 2],WS.Cells.Item[I, 2]].Value2:=IntToStr(sumanac);
WS.Range[WS.Cells.Item[I, 3],WS.Cells.Item[I, 3]].Value2:=IntToStr(sumareg);
WS.Range[WS.Cells.Item[I, 4],WS.Cells.Item[I, 4]].Value2:=IntToStr(sumaprop);

ExcelApp.ScreenUpdating[Lcid]:= True;
//Aqui deberia de guardarla en disco, pero no se como
excelapp.Quit;

lanysoft
13-06-2003, 20:47:39
Cuando este listo el archivo para wardar
aplique el siguiente codigo:
nombre="nombre del archivo"

ExcelWorkbook1.SaveAs(nombre,xlNormal,'','',
EmptyParam,EmptyParam,0, EmptyParam, EmptyParam, EmptyParam,
EmptyParam,0)
ExcelWorkbook1.Close;
ExcelWorksheet1.Disconnect;
ExcelWorkbook1.Disconnect;
ExcelApplication1.Disconnect;

<<<<<<<<Aunque es mejor no seguir usando excel>>>>>>>>>
Existen otras herramientas menos malas Word perfect Suite, lotus, etc.

auxifs
16-06-2003, 16:50:47
Muchas gracias