Grabadora de macros no graba algunos pasos aleatoriamente

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Avatar de Usuario
ifanlo
Mensajes: 420
Registrado: Lun Mar 30, 2009 10:32 am

Grabadora de macros no graba algunos pasos aleatoriamente

Mensaje por ifanlo »

Hola, amigos!

Me encuentro con un "fenómeno paranormal" contra el que aún no me había enfrentado. En un curso online que estamos impartiendo para una empresa, les he puesto un ejercicio de macros donde especifico que graben una macro con los siguientes pasos:
  • 1) Abre una hoja en blanco y guárdala con el nombre practica-macros.ods
  • 2) Inicia la grabación de la macro (Herramientas > Macro > Grabar macro).
  • 3) Haz clic en la celda A1.
  • 4) Escribe tu nombre y apellidos y pulsa <Intro>, la celda activa habrá pasado a ser A2.
  • 5) Escribe una dirección postal ficticia y pulsa <Intro>, la celda activa habrá pasado a ser A3.
  • 6) Escribe una población ficticia y pulsa <Intro>, la celda activa habrá pasado a ser A4.
  • 7) Haz clic en la celda A1 nuevamente
  • 8) Pon el texto de tu nombre y apellidos en negrita y color azul
  • 9) Finaliza la grabación
Esta macro genera el siguiente código:

Código: Seleccionar todo

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "Nombre y Apellidos"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = "Domicilio"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "StringName"
args6(0).Value = "Población"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args6())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "ToPoint"
args8(0).Value = "$A$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Bold"
args9(0).Value = true

dispatcher.executeDispatch(document, ".uno:Bold", "", 0, args9())

rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "Color"
args12(0).Value = 255

dispatcher.executeDispatch(document, ".uno:Color", "", 0, args12())


end sub
Cuando los alumnos se quejaron de que no se grababa bien la macro, lo atribuí a los típicos clics espontáneos o acciones incorrectas de las personas poco acostumbradas a ejecutar las acciones con precisión.

Pero esta semana tuve unas sesiones de formación presencial en la misma empresa, y comprobé que en algunos de sus ordenadores no se graban todos los pasos. Es curioso, porque parece algo aleatorio. Lo que deja de grabar son algunas instrucciones uno:EnterString, al azar, a veces la primera, a veces la última. Siempre se graba correctamente el uno:JumpToNextCell, el uno:GoToCell y las asignaciones de propiedades de fuente.

Pensando que quizás en aquellos ordenadores la pulsación de <Intro> no se capturaba correctamente probé a validar los textos mediante el botón de aceptar de la barra de fórmulas y provocando el desplazamiento con las flechas del teclado... pero funcionó exactamente igual. :crazy:

La reproducción de la macro en todos los casos se ejecuta correctamente (de los pasos grabados, claro). El fallo está sólo en esos pasos que no graba. Esto ha ocurrido con la versión 3.2.0 en Windows XP.

¿Os habéis encontrado alguna vez con esta situación?

Gracias,
Ismael Fanlo

*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Grabadora de macros no graba algunos pasos aleatoriament

Mensaje por mauricio »

Mi estimado Ïsmael...

En mi caso particular nunca me he encontrado con este comportamiento, pero te confieso que no recuerdo la ultima vez que use la grabadora de macros, ya ni me acordaba que existía. Hice la grabación de los pasos que mencionas y funciono bien, pero en mi experiencia y lo he vuelto a comprobar con unas pruebas, los pasos a grabar deben de estar lo más claramente planificados y llevados como si fuera guión, además de grabar las acciones lo menos complejas o más simples como quieran verlo, de las acciones, es decir, si el usuario empieza a grabar y como en el trabajo diario, se equivoca y empieza a modificar (aun y cuando sea algo simple), a la grabadora de macros, como dicen en mi pueblo -se le van las cabras-. Como pruebas de concepto, como muestra de que es posible y como alternativa para "ciertos" usuarios, esta bien la grabadora de macros, pero aun sigo desaconsejando completamente su uso para la implementación de un proceso automatizado.

¿Deseas que realice alguna otra prueba?.

Un abrazo
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
ifanlo
Mensajes: 420
Registrado: Lun Mar 30, 2009 10:32 am

Re: Grabadora de macros no graba algunos pasos aleatoriament

Mensaje por ifanlo »

Gracias, Mauricio!

No, no hace falta que investigues. Más que nada lo puse por si a algún experto le ha ocurrido pues es algo muy raro. Yo también pensé que eran errores de los usuarios, pero lo pude comprobar haciéndolo personalmente en algunos de los PC's donde fallaba. Pienso si habrá algún software de protección que interfiera... no sé... es algo tan raro. :-/

Salud,
Ismael Fanlo

*ifanlo - soluciones libres* http://ifanlo.com
- Consultoría en migraciones a software libre
- Soporte ofimático online
- E-learning
- Formación informática presencial
Pongoo
Mensajes: 1
Registrado: Vie Dic 20, 2019 11:37 pm

Re: Grabadora de macros no graba algunos pasos aleatoriament

Mensaje por Pongoo »

ifanlo escribió:Hola, amigos!

Me encuentro con un "fenómeno paranormal" contra el que aún no me había enfrentado. En un curso online que estamos impartiendo para una empresa, les he puesto un ejercicio de macros donde especifico que graben una macro con los siguientes pasos:
  • 1) Abre una hoja en blanco y guárdala con el nombre practica-macros.ods
  • 2) Inicia la grabación de la macro (Herramientas > Macro > Grabar macro).
  • 3) Haz clic en la celda A1.
  • 4) Escribe tu nombre y apellidos y pulsa <Intro>, la celda activa habrá pasado a ser A2.
  • 5) Escribe una dirección postal ficticia y pulsa <Intro>, la celda activa habrá pasado a ser A3.
  • 6) Escribe una población ficticia y pulsa <Intro>, la celda activa habrá pasado a ser A4.
  • 7) Haz clic en la celda A1 nuevamente
  • 8) Pon el texto de tu nombre y apellidos en negrita y color azul
  • 9) Finaliza la grabación
Esta macro genera el siguiente código:

Código: Seleccionar todo

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "StringName"
args2(0).Value = "Nombre y Apellidos"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "StringName"
args4(0).Value = "Domicilio"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args4())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "StringName"
args6(0).Value = "Población"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args6())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "ToPoint"
args8(0).Value = "$A$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Bold"
args9(0).Value = true

dispatcher.executeDispatch(document, ".uno:Bold", "", 0, args9())

rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "Color"
args12(0).Value = 255

dispatcher.executeDispatch(document, ".uno:Color", "", 0, args12())


end sub
Cuando los alumnos se quejaron de que no se grababa bien la macro, lo atribuí a los típicos clics espontáneos o acciones incorrectas de las personas poco acostumbradas a ejecutar las acciones con precisión.

Pero esta semana tuve unas sesiones de formación presencial en la misma empresa, y comprobé que en algunos de sus ordenadores no se graban todos los pasos. Es curioso, porque parece algo aleatorio. Lo que deja de grabar son algunas instrucciones uno:EnterString, al azar, a veces la primera, a veces la última. Siempre se graba correctamente el uno:JumpToNextCell, el uno:GoToCell y las asignaciones de propiedades de fuente.

Pensando que quizás en aquellos ordenadores la pulsación de <Intro> no se capturaba correctamente probé a validar los textos mediante el botón de aceptar de la barra de fórmulas y provocando el desplazamiento con las flechas del teclado... pero funcionó exactamente igual. :crazy:

La reproducción de la macro en todos los casos se ejecuta correctamente (de los pasos grabados, claro). El fallo está sólo en esos pasos que no graba. Esto ha ocurrido con la versión 3.2.0 en Windows XP.

¿Os habéis encontrado alguna vez con esta situación?

Gracias,
Hola, si me ha pasado, y también le sucedión a otro que impartía clases en un lugar diferente.
Creemos que podría haber sido por el Symantec Norton GoBack.
OpenOffice 3.1 en Windows
Responder