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
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
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.
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,