Errores OLE en TEXCELSCRIPT

Errores OLE en TEXCELSCRIPT

Postby puenteda » Thu Feb 24, 2022 12:51 pm

Buenos dias, tengo todavia varios sistemas con xharbour y fwh1601. A alquien mas le pasa que con las nuevas versiones de office según en que pc se corra el sistema en algunas funciona sin problemas la generacion de archivos excel con texcelscrip y en otras da errores tales como:

Error description: Error 13083268:CELLS/1 Unknown error: FONT
Called from: => TOLEAUTO:FONT( 0 )
Args:
Called from: .\prg\texcels.PRG => TEXCELSCRIPT:SAY( 488 )

Error description: Error 13370740/1 Unknown error: COLUMNS
Args:
[ 1] = N 2
Called from: => TOLEAUTO:COLUMNS( 0 )
Called from: .\prg\texcels.PRG => (b)TEXCELSCRIPT:TEXCELSCRIPT( 173 )

Y varios mas, todos en alguna funcion toleauto: y casi siempre en el texcelscript:say(). Es frustrante y casi siempre tengo que terminar cambiando la exportacion a excel por filexls.

Uso FWHX 16.01 y xHarbour 1.2.3 Intl. bcc7 y un texcels.prg con estos datos en el encabezado:

/*
* Clase TExcelScript v1.14 06-Feb-2004
*
* Esta Clase usa la Libreria Ole2 de José F. Giménez
*
* Autor: Víctor Manuel Tomas Díaz [Vikthor]
*
* Modificaciones y agregados realizadas por:
* Daniel Andrade - [AD2K] 26/08/2002
* Rimantas Usevicius - [RimUs] 25-09-2002
* Carlos Sincur Romero - [CSR] 4/9/2002
* El Browse es un concepto original de René Flores , adaptado a esta clase.

Saludos, y gracias por anticipado por la ayuda
Daniel Puente
Santa Cruz, Argentina
puenteda
 
Posts: 24
Joined: Thu Oct 02, 2014 3:51 am

Re: Errores OLE en TEXCELSCRIPT

Postby hmpaquito » Thu Feb 24, 2022 3:46 pm

Hola,

Llevo varios años sufriendo los errores aleatorios de excel.
En general uso 3 métodos y con ello lo tengo más o menos pacificado:

1- Asignar objeto antes de usarlo. No estoy seguro de que sea eficaz

No hacer
Code: Select all  Expand view
x:= worksheets(1):Name
, sino hacer
Code: Select all  Expand view
o:= oExcel:worksheets(1)
x:= o:Name


2 - Utilizar el recolector de basura despues de grandes operaciones, que parece que corrompe bastante la memoria, al menos para excel:

Code: Select all  Expand view
hb_gcall(.t.)



3 - Usar (una funcion mejor o) bucle para reintentar las operaciones, porque la operacion excel que da error, la reintentas y al segundo, tercer o cuarto intento si funciona

Code: Select all  Expand view
lError:= .t.
FOR nFor:= 1 TO 5
   TRY
      o:= oExcel:worksheets(1)
      lError:= .f.
   END
   IF !lError
      EXIT
   ENDIF
NEXT
 

Salu2


Uso harbour y BCC 7.3
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Errores OLE en TEXCELSCRIPT

Postby puenteda » Thu Feb 24, 2022 5:02 pm

Hola hmpaquito, gracias por contestar, voy lucharlo un poco a ver si se puede capturar el error, pero es dificil porque por ejemplo te da:

Args:
[ 1] = C Matrícula

Stack Calls
===========
Called from: => TOLEAUTO:_VALUE( 0 )
Called from: .\prg\texcels.PRG => TEXCELSCRIPT:SAY( 510 )
Called from: .\prg\TXTDEBITO.PRG => DEBITOPADRONGENERAPLANILLAMENSUAL( 951 )

Y la linea del prg es un simple say:

oExcel:Say(3,1 ,'Matrícula','Arial',09 ,.F. , , , 7 , , , ,1)
//METHOD Say( nRow, nCol, xValue , cFont , nSize , lBold , lItalic ,lUnderLine, nAlign, nColor, nFondo , nOrien , nStyle , cFormat ) CLASS TExcelScript

Como que "explota" el ole y el error sale en cualquier parte, adentro de un do while que recorre una base. Voy a probar tambien llamar al recolector de basura, gracias.

Saludos,
Daniel
puenteda
 
Posts: 24
Joined: Thu Oct 02, 2014 3:51 am

Re: Errores OLE en TEXCELSCRIPT

Postby hmpaquito » Thu Feb 24, 2022 5:21 pm

Hola,

No utilizo la clase TExcelScript, utilizo clases propias, extremadamente alambicadas con mis programas.

Ahora bien, en mis clases, conforme me fueron apareciendo esos errores, entre otros, fui haciendo métodos intermedios, para evitar tener que trastear mucho los programas dandoles, a los metodos, soporte de errores

Así si en mi clase de manejo de excel tengo un metodo :Say() le puse soporte de errores y lo dejé asi:

Code: Select all  Expand view
METHOD Say(xParametros)
Local nFor
Local lError:= .T.
Local xRet

FOR nFor:= 1 TO 5
   TRY
      xRet:= ::EnlaceSay(xParametros)
      lError:= .f.
   END
   IF !lError
       EXIT
   ENDIF
NEXT
RETURN xRet

METHOD EnlaceSay(xParametros)
--- Operaciones del :Say()
RETURN xxxxx
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Errores OLE en TEXCELSCRIPT

Postby puenteda » Thu Feb 24, 2022 5:43 pm

Si, gracias, me parece que va por ahi la cosa para que no explote todo, el hb_gcall(.t.) parece que tambien ayuda, aunque tarda un poco mas pero igual explota.

Saludos,
Daniel
puenteda
 
Posts: 24
Joined: Thu Oct 02, 2014 3:51 am

Re: Errores OLE en TEXCELSCRIPT

Postby jbrita » Fri Feb 25, 2022 3:50 pm

deberias cambiarlo por:

local oExcel := CreateObject( "excel.application" )
local oBook := oExcel:Workbooks:Add()
local oSheet := oBook:Worksheets( 1 )

Saludos
jbrita
 
Posts: 502
Joined: Mon Jan 16, 2006 3:42 pm

Re: Errores OLE en TEXCELSCRIPT

Postby hmpaquito » Fri Feb 25, 2022 4:16 pm

CreateObject() depende de TOleAuto:

Code: Select all  Expand view
FUNCTION CreateObject( xOle, cLicense )
   RETURN TOleAuto():New( xOle,, cLicense )

FUNCTION GetActiveObject( cString )
   RETURN TOleAuto():GetActiveObject( cString )


Habría, si acaso, que probar con win_oleCreateObject(), pero no sabemos si los metodos son compatibles 100% con TOleAuto, aunque por el hilo de abajo, parece que si. Quizá este puede ser un buen camino a explorar y abandonar TOleAuto y ver si asi desaparecen los errores random. Para probar seria tan facil como poner:

Code: Select all  Expand view
FUNCTION CreateObject( ... )
   RETURN win_oleCreateObject( ... )
 


viewtopic.php?f=6&t=33084
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Errores OLE en TEXCELSCRIPT

Postby puenteda » Tue Mar 01, 2022 10:22 pm

Gracias a ambos, cambiando texcelscript por toleauto y agregandole el control de errores a sus llamadas con try y catch se logra generar planillas grandes sin que explote, definitivamente fue la solucion.

Saludos,
Daniel Puente
Santa Cruz, Argentina
puenteda
 
Posts: 24
Joined: Thu Oct 02, 2014 3:51 am

Re: Errores OLE en TEXCELSCRIPT

Postby puenteda » Wed Mar 02, 2022 12:08 am

Estimados:

Ya que estamos una ultima pregunta, alguno logro poder usar los autofiltros de excel ?. Deberia ser x ej:

oSheet:Range("A3:H903"):Autofilter()

Pero no funcionan.

Saludos,
Daniel Puente
puenteda
 
Posts: 24
Joined: Thu Oct 02, 2014 3:51 am

Re: Errores OLE en TEXCELSCRIPT

Postby Joel Andujo » Mon May 23, 2022 8:55 pm

Estimado, tal vez ya sea tarde, pero para que funcione el filtro
la información debe empezar en el renglón inmediato indicado en el filtro:

Ejemplo

// Renglón de los filtros
oSheet:Range("A3:Z3"):Autofilter()

La información del excel debe iniciar en el renglón 4:

espero haberte ayudado, a mi me funciona muy bien.
Joel
User avatar
Joel Andujo
 
Posts: 131
Joined: Fri Oct 07, 2005 3:14 pm
Location: Cd. Obregón, Sonora, México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 19 guests