Grabar en Plantilla EXCEL..Ayuda, Comnetario, Sugerencia sobre lo Planteado

94 views
Skip to first unread message

Luis Salazar

unread,
Jan 5, 2014, 2:23:11 PM1/5/14
to publice...@googlegroups.com
Estoy probando un peque#o programa del Sr Walter Ojeda V que tiene como ejemplo y  lo publicado sobre  Clases en VisualFoxpro.

Anexo el programa .  El  programa es para grabar en una planilla de EXCEL
El punto es que hice una copia del programa cambie el Nombre de la Plantilla de EXCEL e hice la prueba por  1ra Vez y funciono bien, luego agrege otras lineas para escribir en la hoja de Excel y NO ha vuelto ha funcionar siempre sale
el error que NO excuentra la Plantilla de EXCEL he probado de varias formar y nada
Nota : tengo instala office 2010 , Con la plantilla que el tiene en ejemplo nunca da error ..

Gracias por la Atencion ..

BALANCE_SUDECA.xls
prueba_grabar_en_excel.prg

HernanCano

unread,
Jan 6, 2014, 12:26:03 AM1/6/14
to publice...@googlegroups.com
Hola, amigo.

Estuve revisando tu código (con respecto  a la hoja xls que nos adjuntas) y encontré los sgtes problemas:

1. Sí al ejecutar dice "No existe hoja de EXCEL con ese Nombre".
Con el fin de saber si éste error era del sistema o de tu app le agregué "<<Err>>". Y al volver a ejecutar sale el mensaje con esta partícula.
Por lo tanto ((conclusión)) sí es algo en el código.

2. Para descubrir dónde estaba el error, escribí varios "WAIT WINDOW" ((como se ve en el adjunto mío)) y ví que es en el cuarto "EscribirCelda", el que tiene (13, 2, 2222.22) como parámetros.
Pero entonces pensé: ¿por qué los anteriores EscribirCelda no muestran error y el cuarto sí?

3. Quise verificar el controlador de errores que usas cómo funciona y descubro que cuando el error es el 1429, se da el mensaje de que no existe la hoja. Esto no no entiendo: ¿Por qué un programador hace ésto?
Con el fin de descrubrir el error real, agregué la línea sgte:
lcMensaje  = loExcepcion.Message  && HCM: agregado por HCano
abajo del case del que no estoy de acuerdo.

Al ejecutar me aperece el sgte error:
Error 1429: La celda o el gráfico que intenta modificar está protegidos y por lo tanto son de sólo lectura.
Este mensaje es muy claro. Pero.... ¿hay celdas protegidas?

4. Me interesaba conocer si había celdas protegidas en el xls; así que tenía que hacer visible el xls. Para ello en la definición de la clase Custom llamada EXCEL debí cambiar el la procedure AbrirPlanilla la sgte instrucción
.Visible = .f.
por la sgte:
.Visible = .T.  && HCM: estaba .f.

Y al ejecutar nuevamente veo que no le puede poner a la celda (13,2) el valor 2222.22 .
Tengo entendido que la celda (13,2) es la B13, donde está el nombre de la cuenta "Caja Principal", la cual evidentemente debería estar protegida, ¿no lo sabías?. Veo que lo está, así como muchas otras.

----------------------------------------------------
CONCLUSION:
Para resolver tu problema, debes:

1. Utilizar un controlador de errores adecuado.
Si vas a utilizar la estructura TRY/CATCH, házlo de la forma correcta. El hecho de poner que ante el error 1429, el Mensaje es "No Existe Hoja de EXCEL con ese Nombre" no me convence; mejor dicho es un error de tu parte.

2. Utilizar la depuración de tus programas.
Yo utilicé WAIT WINDOW en cada instrucción para saber en dónde se sale de la "ruta normal" y pasa al "manejador de errores".
Una mejor forma es utilizar la Depuración de Errores standard de Fox/VFP; ¿la conoces o no?

Tip: SET DEBUG ON y SET STEP ON.

3. No mandar a "escribir" en una celda protegida.
¿Por qué estás mandando a escribir sobre una celda protegida?

Recomendación para el 3:
Para ésto te recomiendo:
a. No escribir sobre celdas protegidas (plop!!!).
b. Optimizar tu función EscribirCelda para que ---antes de escribir-- verifique si la celda está protegida, de manera que la misma función te advierta (con un MessageBox o con un 'wait window', ¿cierto?) que la celda está protegida y que no puede escribir en ella. De esta forma el servidor OLE no devuelve un error que te mata el programa (lo está matando, ¿cierto?).
¿Qué prefieres a ó b?

4. No abrir otro tema para preguntar "¿Cómo de revisa por automatización, si una celda de un xls está protegida?" ni tampoco "¿Para qué sirve

HernanCano

unread,
Jan 6, 2014, 12:27:03 AM1/6/14
to publice...@googlegroups.com
4. No abrir otro tema para preguntar "¿Cómo de revisa por automatización, si una celda de un xls está protegida?" ni tampoco "¿Para qué sirve SET STEP ON si se abre una ventana con todo el código y no puedo escribir sobre él y no me deja ver lo que el programa hace?"

HernanCano

unread,
Jan 6, 2014, 12:38:43 AM1/6/14
to publice...@googlegroups.com
prueba_grabar_en_excel-MODIFICADO.prg
prueba_grabar_en_excel-MODIFICADO.prg

kondor

unread,
Jan 6, 2014, 8:41:00 AM1/6/14
to publice...@googlegroups.com
Feliz Año para todos.

Tuve problemas similares y, en mi caso se debía a las extensiones de los archivos.
Como tengo instalado Excel 2013, por defecto generaba archivos con extensión XLSX que luego no eran visualizados cuando buscaba XLS.

No se si te sirva pero esa tontería me volvió loco por un buen tiempo.

Suerte,

Jorge

Luis Salazar

unread,
Jan 6, 2014, 10:49:44 AM1/6/14
to publice...@googlegroups.com
Mil Gracias HERNAN por tu tiempo y las observaciones
voy a REVISAR  ...


Luis Salazar

unread,
Jan 6, 2014, 11:07:43 AM1/6/14
to publice...@googlegroups.com
Hernan en realidad NO escribi el Codigo el fuente arriba identifica al AUTOR
Walter Ojeda ..
Lo estoy utilizando para una aplicacion en especial .
Tomare en cuenta tus observaciones ..   y si ya me funciono bien
Gracias

HernanCano

unread,
Jan 6, 2014, 12:44:00 PM1/6/14
to publice...@googlegroups.com
Pero si posteas estos temas, se considera que eres programador.
No le eches la culpa de errores a otros.

Jose Ramon Veliz Martinez

unread,
Jan 7, 2014, 4:28:52 PM1/7/14
to publice...@googlegroups.com
Ese error se da si no tienes en tu directorio la carpeta o el directorio EXCEL creado, tambien sino tienes la plantilla dentro de esa carpeta.

Saludos
Reply all
Reply to author
Forward
0 new messages