Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-10-2003
Sergio Sergio is offline
Registrado
 
Registrado: jun 2003
Ubicación: Valencia
Posts: 8
Poder: 0
Sergio Va por buen camino
Question 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?

Responder Con Cita
  #2  
Antiguo 27-11-2006
trygvekor trygvekor is offline
Registrado
 
Registrado: ago 2006
Posts: 8
Poder: 0
trygvekor Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 29-11-2006
sebamora sebamora is offline
Miembro
 
Registrado: nov 2006
Ubicación: salta - argentina
Posts: 32
Poder: 0
sebamora Va por buen camino
q genio

la verdad con esta solucion me simplificaste la vida. gracias trygvekor
Responder Con Cita
  #4  
Antiguo 28-02-2007
llilli llilli is offline
Registrado
 
Registrado: feb 2007
Posts: 1
Poder: 0
llilli Va por buen camino
Red face

[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..
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:56:14.


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
Copyright 1996-2007 Club Delphi