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 18-03-2004
OxaNet OxaNet is offline
Registrado
 
Registrado: mar 2004
Posts: 6
Poder: 0
OxaNet Va por buen camino
Necesito crear un Sheet Oculto en Excel

Saludos foro :

Les cuento, estoy desarrollando un sistema de control de minerales, antes los ususrios registraban los analisis en excel, yo desarrolle un form con las caracterisiticas parecidas, pero no le cuadra, no quieren usarlo, y el proyecto esta tambaleando. Por lo tanto necesito hacer q el sisitema interactue con Excel.

Libro : _WORKBOOK;
Hoja : _WORKSHEET;
...
Excel es un compnente TExcelApplication

...
1ro Activo Excel con una Plantilla

Excel.Connect;
Excel.Visible[0] := true;
Libro := Excel.Workbooks.Add(xFile+xPlantilla,0);
Hoja := Libro.Sheets[1] as _WORKSHEET;
Hoja.Name:='Plantilla';

2do Necesito q la Hoja insertada sea oculta y utilizarla como plantilla.

No puedo insertar otra hoja, deberia poder copiar las celdas de "Plantilla ", insertar una nueva hoja, ponerle nombre y luego pegar las celdas copiadas de la hoja de plantillas.

3ro Insertar mas Hojas.

* Segun el trabajo se iran insertando mas hojas con distinto nombre pero copiando las celdas de la plnatilla.

Bueno, es todo lo q se me ocurre.

Vi los ejemplo, pero crean 8 Hojas de golpe, yo necesito ir creandolas una a una y en diferentes tiempos.

Tengo otro problema cuando cierro la aplicaion y dejo Excel abierto, al cargar nuevamente la aplicacion e intentar cargar excel se cuelga, no se como liberar la variable de excel, ya probe con free y nada.

Espero q alguien pueda ayudarme, los usuarios quieren tirar abajo el proyecto.

Agradeceria cualquier sugerencia.


Gracias


Joseph

Lima - Perú
Responder Con Cita
  #2  
Antiguo 19-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No estoy seguro de haber entendido pero te pongo una idea.

Tengo una situación similar en la que debo elaborar listas de alumnos de uno o más grupos. Cada grupo debe ir en una hoja distinta pero todas los hojas son iguales en cuanto al formato.

En lugar de crear una hoja oculta lo que hago es crear la primera hoja a partir de una plantilla (como le haces tú, segun me parece) y lleno los datos.

Cuando tengo que agregar una nueva hoja utilizo algo así:

Código:
Hoja := Libro.ActiveSheet as _WORKSHEET;
Hoja.Copy(null, Hoja, 0);

Hoja := Libro.ActiveSheet as _WORKSHEET;
Hoja.Name := 'Hoja' + IntToStr(Libro.Sheets.Count);

LimpiarHoja(Hoja);
Es decir, copio la hoja activa, asigno a la copia un nombre secuencial y finalmente limpio la hoja, es decir, borro sus datos. De esta manera el formato queda igual que la plantilla original pero con celdas vacías.

En el método LimpiarHoja simplemente borro las celdas que me interesen:

Hoja.Cells.Item[Ren, Col] := '';

preservando las que sean comunes como títulos y demás.

En cuanto a lo de que se cuelga quizá te sirva poner

Excel.AutoQuit en true.

// Saludos
Responder Con Cita
  #3  
Antiguo 20-03-2004
OxaNet OxaNet is offline
Registrado
 
Registrado: mar 2004
Posts: 6
Poder: 0
OxaNet Va por buen camino
Tengo un error al pegar celdas copiadas

Gracias por la respuesta Sr. Moderador Roman, me sirvio mucho.

Estuve investigando y probando y probando y bueno, logre encontrar algunos hilos en el foro q me sirvieron. Y desarrolle lo siguiente.

Utilizo : TExelApplication, TExcelWorkBook, TExcelWorkSheet

* Me conecto a Excel
* Abro el Arhivo (File.xls)
* // El Libro de Excel tiene cierto numero de Hojas, q se crean dinamicamente de acuerdo a una condicion "x" en el nombre de la hoja , entonces si no cumple una condicion debo crear una hoja, en base a una de las hojas ya existentes.

* Entonces si voy a crear una nueva hoja, me conecto a la hoja donde esta la plantilla. (la ubico por el nombre)

// xRef : Index de la hoja con la plantilla
// Me conecto
ExcelWorkSheet1.ConnectTo(ExcelApplication1.Sheets[xRef] as _WorkSheet);
// Copio las seldas selecciondas
ExcelWorksheet1.Range['A1', 'DJ220'].Copy(EmptyParam);

// Luego me conecto a la hoja nueva donde pegare las celdas copiadas, estas celdas tienen formulas


ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook As _WorkBook);
ExcelWorkBook1.Sheets.Add(EmptyParam,EmptyParam,1,1,0);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets['Sheet1'] as _Worksheet);
ExcelWorkSheet1.Paste(EmptyParam); // aqui da error

* Tambien da error con :

ExcelWorkSheet1.Paste(EmptyParam,EmptyParam);
ExcelWorkSheet1.Paste(EmptyParam,EmptyParam,EmptyParam);
ExcelWorkSheet1.Paste;
// Me carga Visual Basic con el mensaje "Compile Error : Can't find project or library"


* Espero q alguien pueda ayudarme,


Gracias por la ayuda.


Joseph

Lima - Perú
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 01:15:03.


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