Errores OLE en TEXCELSCRIPT
Errores OLE en TEXCELSCRIPT
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
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
Re: Errores OLE en TEXCELSCRIPT
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, sino hacer
2 - Utilizar el recolector de basura despues de grandes operaciones, que parece que corrompe bastante la memoria, al menos para excel:
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
Salu2
Uso harbour y BCC 7.3
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
x:= worksheets(1):Name
Code: Select all | Expand
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
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
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
Re: Errores OLE en TEXCELSCRIPT
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
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
Re: Errores OLE en TEXCELSCRIPT
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:
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
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
Re: Errores OLE en TEXCELSCRIPT
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
Saludos,
Daniel
Re: Errores OLE en TEXCELSCRIPT
deberias cambiarlo por:
local oExcel := CreateObject( "excel.application" )
local oBook := oExcel:Workbooks:Add()
local oSheet := oBook:Worksheets( 1 )
Saludos
local oExcel := CreateObject( "excel.application" )
local oBook := oExcel:Workbooks:Add()
local oSheet := oBook:Worksheets( 1 )
Saludos
Re: Errores OLE en TEXCELSCRIPT
CreateObject() depende de TOleAuto:
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:
viewtopic.php?f=6&t=33084
Code: Select all | Expand
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
FUNCTION CreateObject( ... )
RETURN win_oleCreateObject( ... )
viewtopic.php?f=6&t=33084
Re: Errores OLE en TEXCELSCRIPT
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
Saludos,
Daniel Puente
Santa Cruz, Argentina
Re: Errores OLE en TEXCELSCRIPT
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
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
- Joel Andujo
- Posts: 132
- Joined: Fri Oct 07, 2005 3:14 pm
- Location: Cd. Obregón, Sonora, México
- Contact:
Re: Errores OLE en TEXCELSCRIPT
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
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