Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Copiar y Pegar en Excel desde Delphi (https://www.clubdelphi.com/foros/showthread.php?t=4455)

Sergio 16-10-2003 12:19:57

Copiar y Pegar en Excel desde Delphi
 
Hola,

Llevo un tiempo intentando utilizar las funciones de copiar y pegar en Excel desde delphi utilizando un Excelapplication y Excelworksheet y no lo he conseguido. He intentado varias formas, la que creo que es más correcta o logica seria esta:

ExcelWorksheet1.Cells.Range_[CopiarCelda,CopiarCelda].Select;
ExcelWorksheet1.Copy;

ExcelWorksheet1.Cells.Range_[PegarEnCelda,PegarEnCelda].Select;
ExcelWorksheet1.Paste;

donde CopiarCelda y PegarCelda son las celdas origen y destino respectivamente.

Me da error al intentar hacer el primer Select.
¿como resolver este problema?

:confused: :confused:

trygvekor 27-11-2006 06:20:33

Copiar y pegar
 
Hola, te paso dos procedimientos que hacen lo que necesitas, si bien no estan hechas para que trabajen sobre la planilla de excel, puedes adaptar el codigo facilmente para que lo haga(estan hechas sobre un stringgrid). Yo utilizo un stringgrid auxiliar, pero mas que nada lo puse para poder verificar los datos.

procedure TForm1.CopiarCortarSel(borrar:bool);
var
i,j:integer;
RecCopiar:TGridRect;
begin
RecCopiar:=stringgrid1.Selection;
stringgrid2.ColCount:=RecCopiar.Right-RecCopiar.Left+2;
stringgrid2.rowCount:=RecCopiar.Bottom-RecCopiar.Top+2;
for i:=1 to (stringgrid2.ColCount-1) do
begin
for j:=1 to (stringgrid2.RowCount-1)do
begin
stringgrid2.Cells[i,j]:=stringgrid1.Cells[i+RecCopiar.Left-1,j+RecCopiar.top-1];
if borrar then stringgrid1.Cells[i+RecCopiar.Left-1,j+RecCopiar.top-1]:='';
end;
end;
end;

procedure TForm1.PegarSel;
var
i,j: integer;
begin
for i:=stringgrid1.Col to (Stringgrid1.Col+stringgrid2.ColCount-2) do
begin
for j:=stringgrid1.Row to (Stringgrid1.Row+stringgrid2.rowCount-2)do
begin
stringgrid1.Cells[i,j]:=stringgrid2.Cells[i+1-stringgrid1.Col,j+1-stringgrid1.Row]
end;
end;
end;


lo que tienes que modificar es en donde dice stringgrid1.cells[x,y] poner worksheet.Cells.Item[x,y] o algo similar. Suerte

Es mi primer colaboracion en un foro, asi que si te sirvio me gustaria que lo digas asi lo sigo haciendo.:)

sebamora 29-11-2006 01:51:32

q genio
 
la verdad con esta solucion me simplificaste la vida. gracias trygvekor

llilli 28-02-2007 21:26:13

[quote=Sergio]Hola,


ExcelWorksheet1.Cells.Range_[CopiarCelda,CopiarCelda].Select;
ExcelWorksheet1.Copy;

ExcelWorksheet1.Cells.Range_[PegarEnCelda,PegarEnCelda].Select;
ExcelWorksheet1.Paste;

donde CopiarCelda y PegarCelda son las celdas origen y destino respectivamente.

Has probado con esto

ExcelWorksheet1.Range[CopiarCelda, CopiarCelda].Copy(ExcelWorksheet1.Range[PegarCelda, PegarCelda]);

o tambien funciona asi

ExcelWorksheet1.Range[CopiarCelda, EmptyParam].Copy(ExcelWorksheet1.Range[PegarCelda, EmptyParam]);

Saludos y espero que no sea demasiado tarde..


La franja horaria es GMT +2. Ahora son las 11:03:46.

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