Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2014
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Agregar hoja a excel usando OLE

Saludos

Estoy exportando a excel y todo va bien hasta que necesito pasar de la tercera hoja, cuando se crea el libro por defecto viene con tres hojas y no se como agregar la cuarta. Aqui les dejo el código de la creación del libro que estoy usando

Código:
Variant Excel,Libro,Hoja,Celda;
Excel = CreateOleObject("Excel.Application");
Excel.OlePropertySet("Visible", true);
Libro=Excel.OlePropertyGet("Workbooks");
Libro.OleProcedure("Add");
Hoja=Libro.OlePropertyGet("Item",1);
Libro=Hoja.OlePropertyGet("Worksheets");
Imagino que en algún lado se encuentre escrito como comunicarse con Excel usando OLE pero aun no lo he encontrado. Tratando a ciegas solo recibo errores OLE indicando que no se encuentra el parametro o que ocurrio una excepción. Como por ejemplo

Código:
---------------------------
Debugger Exception Notification
---------------------------
Project PROJECT.exe raised exception class EOleSysError with message 'Ocurrió una excepción'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------

Código:
---------------------------
Debugger Exception Notification
---------------------------
Project PROJECT.exe raised exception class EOleSysError with message 'No se ha encontrado el miembro'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------
Gracias por su tiempo
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #2  
Antiguo 30-09-2014
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
Yo nunca he usado OlePropertyXXX para acceder a las propiedades y métodos de Excel aunque sí lo hago a través de un variant:

Código Delphi [-]
var
  Excel, Libro, Hojal: OleVariant;

begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Visible := false;

  Libro := Excel.Workbooks.Open(Plantilla); // Plantilla es la ruta a un archivo excel que uso como plantilla
  Hoja := Libro.Worksheets[1];
  Hoja.Cells[4, 'F'] := 'Hola mundo';

  // etcétera
end;

Lso métodos y propiedades los encuentro en la misma ayuda de Excel. En la versión que uso (2007) tienes que ir a la ficha Programador, desde ahí abrir Visual Basic y ahí abrir la ayuda y buscar el tópico Referencia del programador de Excel 2007|Referencia del modelo de objetos Excel.

Ahí, encontrarás, para el caso específico que preguntas, que el objeto Worksheets tiene un método Add:

Código Delphi [-]
Hoja := Libro.Worksheets.Add();

que tiene algunos parámetros opcionales para indicar la posición en la que quieres agregar la hoja.

// Saludos
Responder Con Cita
  #3  
Antiguo 30-09-2014
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
No se como llevarlo a BCB ... trate con algo asi
Código:
Hoja=Libro.OlePropertyGet("Worksheets","add");
Pero no funciona, alguna idea de como hacerlo ?? este es el error que me devuelve

Código:
---------------------------
Debugger Exception Notification
---------------------------
Project VB.exe raised exception class EOleSysError with message 'Nombre desconocido'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #4  
Antiguo 30-09-2014
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
ya !!!!!!!!! Gracias roman por la ayuda ... agrego la forma !!!

mirando el codigo de roma me di cuenta que debia llamar a Worksheets la pregunta era como ... y en mi intento anterior trate de hacerlo todo junto !!! leyendo un poco mas arriba note que ya llamaba a Worksheets en esta linea

Código:
Libro=Hoja.OlePropertyGet("Worksheets");
por lo que trate de solo agregar el "Add" y quedo de esta manera

Código:
 Libro.OleProcedure("Add");
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________

Última edición por lmpadron fecha: 30-09-2014 a las 20:47:40.
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 de excel en mi formulario luis1980 C++ Builder 4 23-04-2010 14:30:46
Agregar datos en una hoja de excel donde la fila inicial puede variar JoAnCa Servers 9 22-08-2008 15:07:42
Problema con ADO y Hoja Excel mariofur Conexión con bases de datos 3 18-06-2008 16:58:10
Hoja Excel via web Nbull Varios 0 02-02-2006 11:11:36
agregar registros usando INSERT ... papu MySQL 2 25-07-2005 01:18:40


La franja horaria es GMT +2. Ahora son las 21:23:27.


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