Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-02-2009
Avatar de PaFernan99
PaFernan99 PaFernan99 is offline
Miembro
 
Registrado: mar 2004
Ubicación: La Plata, Buenos Aires, Argentina
Posts: 79
Poder: 21
PaFernan99 Va por buen camino
Question Problema con CreateOleObject

Hola Gente!
No he encontrado referencia en el foro sobre mi problema asi que me he animado a plantearlo, a pesar de que se habla mucho de esto...

Necesito, a partir de un archivo de texto separado por TAB, crear un archivo excel con el mismo nombre. He construido el siguiente método

Código Delphi [-]
procedure TConvertirAExcel.ProcesarTXT;
var Excel:variant;
begin

        try
          Excel := CreateOleObject('Excel.Application');
          Excel.workbooks.open(ExtractShortPathName(dirPath+'\list.txt'));
          Excel.workbooks.saveAs(ExtractShortPathName(dirPath+'\list.xls'));
          Excel.Quit;
        except
            inc(self.archivosSalteados);
            showmessage('No he podido crear el objeto OLE');

         end;


end;

Método que pertenece a un hilo que he creado para un proceso por lotes.
El problema es que al debuggear el método, se dispara la exception cuando intenta ejecutar la primera línea de código que sigue al try.
¿Cuál puede ser el inconveniente?
Responder Con Cita
  #2  
Antiguo 13-02-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, indícanos el error completo que te esta saliendo.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 13-02-2009
Avatar de PaFernan99
PaFernan99 PaFernan99 is offline
Miembro
 
Registrado: mar 2004
Ubicación: La Plata, Buenos Aires, Argentina
Posts: 79
Poder: 21
PaFernan99 Va por buen camino
Hola Caro!
El error principal consiste en que al intentar crear el objeto OLE no lo hace, sino que se dispara la excepción.
Luego, en algunos casos al cerra la ventana de la aplicación se generan dos mensajes de error:

1)

Exception EOSError in module greenTools.exe at 000E806
System error code: 1400
El identificador de la ventana no es válido

2)

Runtime error 216 at 0046DB04.

Muchas gracias!!
Responder Con Cita
  #4  
Antiguo 13-02-2009
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.286
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
¿Tienes Excel Instalado? ¿Qué versión?
(como dice Caro) ¿Qué error da?

Segun esto, esa línea es correcta.
También puedes revisar este documento que hay sobre el tema en dn.codegear.
__________________
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
  #5  
Antiguo 13-02-2009
Avatar de PaFernan99
PaFernan99 PaFernan99 is offline
Miembro
 
Registrado: mar 2004
Ubicación: La Plata, Buenos Aires, Argentina
Posts: 79
Poder: 21
PaFernan99 Va por buen camino
Perdon por enviar la informacion con cuentagotas...
Es excel 2003.
Lo raro es que tengo el mismo código(no exactamente 100%, pero parecido), en una aplicacon que lo que hace es levantar el txt y mostrarlo en un TStringgrid, y lo hace perfecto. La unica línea de diferencia es la de

Cita:
Excel.workbooks.saveAs(ExtractShortPathName(dirPath+'\list.xls'));
Saludos!

(editado)

Bueno, creo que la respuesta a mi pregunta es que el objeto que estoy tratando de crear va a ejecutarse dentro de un hilo. Saqué fuera del hilo el mismo código y funciona perfectamente.

Muchas gracias a los dos!!!

Última edición por PaFernan99 fecha: 13-02-2009 a las 16:33:38. Razón: Creo que encontré la respuesta
Responder Con Cita
  #6  
Antiguo 13-02-2009
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, como te ha dicho Neftali, el error no es al crear, acabo de hacer una prueba y justamente el error da en la línea que indicas del SaveAs, es este "Method saveAs not supported by automation object" , lo que creo que esta pasando es que tu estas abriendo directamente el archivo txt y lo quieres grabar como xls, que yo sepa el Open debes utilizarlo para abrir archivos xls y despues ir añadiendo en la celdas ExcelAplication.Workbook.Worksheets[1].Cells[1, 1] := valor y lo mismo paar crear uno nuevo tendrías que recorrer lo que tienes en tu archivo e ir añadiendo, yo nose si se pueda hacer así directo como lo estas haciendo.

Tienes otra opción para guardar tu archivo txt como xls, pruebalo.

Código Delphi [-]
var
 sl : TStringList;
begin
 slFile := TStringList.Create;
 slFile.LoadFromFile(dirPath+'\list.txt');
 slFile.SaveToFile(dirPath+'\list.xls');

Si tu separador es el Tab como dices, te lo va a poner en columnas diferentes.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #7  
Antiguo 16-02-2009
Avatar de PaFernan99
PaFernan99 PaFernan99 is offline
Miembro
 
Registrado: mar 2004
Ubicación: La Plata, Buenos Aires, Argentina
Posts: 79
Poder: 21
PaFernan99 Va por buen camino
Muchas gracias Caro!!
Ahora mismo lo estoy probando.
Gracias a todos!!!

PD:Sencillo y eficaz!!!
Muchas gracias Caro!

Última edición por PaFernan99 fecha: 16-02-2009 a las 12:32:03. Razón: PosData
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
Que uses debo usar para CreateOleObject Bertifox2008 Internet 1 25-07-2008 23:03:53
CreateOLEObject y eventos maddinf Varios 1 22-11-2007 17:42:13
CreateOleObject problemas con los eventos maddinf Varios 0 22-11-2007 12:05:36
CreateOleObject('Excel.Application') KAYO Varios 3 19-12-2006 18:45:32
Problema con CreateOleObject slacas75 Varios 0 18-09-2004 00:48:53


La franja horaria es GMT +2. Ahora son las 17:35:05.


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