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 23-06-2006
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
Crear otra hoja en excel igual a la anterior

Hola a todos XD:

Mi problema es el siguiente; para acceder a un libro de excel hago lo siguiente:
Código Delphi [-]
var
  Excel, Libro: Variant;
  i: integer;
begin
  Excel:=CreateOleObject('Excel.Application');
  Excel.Visible := False;
  Excel.DisplayAlerts:= False;
  Excel.WorkBooks.Add('plantilla.xlt');
  Excel.WorkBooks[1].WorkSheets[1].Name := 'Productos';
  Libro := Excel.WorkBooks[1].WorkSheets['Productos'];

El archivo de la plantilla tiene una sola hoja y yo necesito crear, a partir de esa hoja, un numero indeterminado de copias iguales.

¿Como hago por favor? no encuentro nada en el foro
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #2  
Antiguo 23-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Para crear una hoja nueva en la plantilla a partir de la que hay puedes usar éste código:

Código Delphi [-]
uses
  Activex, ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
  excel : olevariant;
begin
  // Crear el objeto 
  excel := CreateOLEObject('Excel.Application');
  // Acceder a la plantilla
  excel.workbooks.open('c:\temp\plantilla.xlt');
  // Seleccionar la hoja
  excel.sheets[1].select;
  // Copiar la hoja seleccionada
  excel.sheets[1].copy(EmptyParam, excel.sheets[1]);
  // desactivar alertas para que no avise de que vas a guardar sobre la misma plantilla
  Excel.DisplayAlerts := False;
  // Guardar en el mismo XLT
  excel.activeWorkBook.SaveAS('C:\Temp\plantilla.xlt');
  // Cerrar
  excel.workbooks.Close;
  // liberar
  Excel := Unassigned;
end;

Funciona perfectamente con Excel 2003; Espero que no tengas problemas con versiones anteriores.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 24-06-2006
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
Muchas gracias, funciona perfectamente, ahora la duda que me quedas es como puedo poner en primer plano, por ejemplo, la hoja numero 5, ya que aunque puedo insertar datos en esa hoja, yo quiero que el cliente se quede con el libro abierto ante el en la hoja que le corresponda a cada momento.

Muchas gracias de nuevo
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #4  
Antiguo 25-06-2006
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
He probado el codigo para copiar las hojas, me ha funcionado durante 20 minutos, ahora cuando ejecuto
Código Delphi [-]
while not CUsuarios.Eof do
begin
   excel.sheets[1].select;
   excel.sheets['PLANTILLA'].copy(EmptyParam, excel.sheets[1]);
   CUsuarios.Next;
end;

Me pone que el servidor lanzó una excepción.

A que se puede deber, el error lo da justo en la lína

Código Delphi [-]
   excel.sheets['PLANTILLA'].copy(EmptyParam, excel.sheets[1]);
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #5  
Antiguo 26-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Novás
Me pone que el servidor lanzó una excepción.
Estaría bien saber cual es la excepción que te ha "lanzado".
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 26-06-2006
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
Es que no sabría deciros, el mensaje exacto que me pone es ese:

El servidor lanzó una excepción.
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #7  
Antiguo 23-07-2006
cuburu cuburu is offline
Miembro
 
Registrado: mar 2005
Posts: 63
Poder: 20
cuburu Va por buen camino
De forma inmediata se me ocurre que el problema no es tanto de el manejo de excel, por lo que veo estas haciendo una llamada a una tabla que contiene un apuntador y vas agregando una nueva hoja por cada registro de dicha tabla. ¿No sería mejor realizar un conteo del total de registros que tienes y en base a ello hacer el ciclo para agregar las hojas que necesites?

Lo que tienes en tú código:

Código Delphi [-]
while not CUsuarios.Eof do
begin
   excel.sheets[1].select;
   excel.sheets['PLANTILLA'].copy(EmptyParam, excel.sheets[1]);
   CUsuarios.Next;
end;

Podrías intentar con algo como esto:

Código Delphi [-]
var
  NoUsers, Cont: Integer;
begin
  NoUsers := CUsuarios.Count;  {Revisa esta parte de la sintaxis pues no la recuerdo bien}
  for Cont := 1 to NoUsers do
  begin
   excel.sheets[1].select;
     excel.sheets['PLANTILLA'].copy(EmptyParam, excel.sheets[1]);
  end;
end;

Espero te sirva esta idea, suerte.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hoja Excel via web Nbull Varios 0 02-02-2006 11:11:36
Exportar a excel con mas de 1 hoja Perio Varios 6 25-01-2006 17:03:48
Delphi abre una hoja excel jgutti Servers 0 19-11-2004 14:00:33
Insertar en una hoja de Excel una foto. Descendents Servers 0 31-10-2003 13:17:34
Formateando una hoja excel xerkan Servers 7 27-10-2003 16:38:47


La franja horaria es GMT +2. Ahora son las 10:08:06.


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