Saludos cordiales. Utilizo LO 7.1.0.3, en Windows 10 (ver 2004).
Deseo hacer macros para ir a marcadores específicos en Writer. En Word, lo puedo hacer con Visual Basic. Sin embargo, lo he intentado en LO y no lo logro. Una vez que concluyo la secuencia de comandos para ir al marcador deseado y pulsar el botón “Finalizar grabación”, se cierra el grabador de macro, sin dar la opción de poner el nombre al macro y grabarlo. Agradeceré cualquier ayuda para resolver este problema.
El procedimiento para crear una macro en LibreOffice Writer usando la grabadora, que funciona en mi PC es:
Hacer clic sobre el menú “Herramientas — Opciones”
En el cuadro contextual hacer clic sobre el apartado “Avanzado” del panel izquierdo
A continuación hacer clic sobre las casillas de verificación de:
“Activar las características experimentales” (podrían provocar inestabilidades)
“Activar grabación de macros (limitada)”.
Finalmente, hacer clic sobre el botón “Aceptar”
Iniciar la grabación de la macro, haciendo clic sobre el menú “Herramientas — Macro —Grabar macro”
Una vez iniciada la grabación de la macro, se deben realizar todos los pasos que se siguen para ejecutar las tareas requeridas.
Finalizadas estas tareas, se detiene la grabación de la macro, haciendo clic sobre el botón “Finalizar grabación” del cuadro contextual flotante “Grabar macro”.
En el siguiente cuadro contextual se debe guardar la macro en cualquiera de las dos opciones:
Guardarla en mis macros
Guardarla dentro del archivo en que se está trabajando.
Para, guardarla en mis macros, se la guarda en el apartado “Mis macros”, dentro de la sección “Standard — Module1”
A continuación se le da un nombre a la macro y se la guarda haciendo clic sobre el botón “Guardar”.
Realizado en MX Linux 19.3 con XFCE 4.16 y Libreoffice 7.1.1.2 /Libreffice Community
Muchas gracias por tu respuesta, Kyodake. El procedimiento que indicas es el que utilizo siempre. Tengo grabados muchos macros. El problema que tengo es con un macro que me permita ir a un marcador, lo cual me resultaría muy útil porque en documentos con muchos marcadores, títulos, tablas e imágenes, desplazarse por el panel de navegación hasta el macro correspondiente toma su tiempo. Cuando intento grabar un macro para ir a un marcador, sigo la secuencia de pasos que corresponden: activo la grabación de macros, voy al panel de navegación, doy doble clic sobre el marcador al que quiero ir, y cuando quiero terminar de grabar, pulso sobre el botón flotante “Fnalizar grabacion”, y en ese momento se cierra el proceso de grabación, sin abrir el cuadro de diálogo para ponerle nombre y guardarlo. Otro procedimiento que sigo es grabar la secuencia de pasos para ir al marcador buscándolo en el menú que se despliega desde el botón de marcadores. En este caso, al finalizar el macro y guardarlo …
(Continúo): … y guardarlo, efectivamente se graba, pero al intentar ejecutarlo no pasa nada, es decir, no se realiza la secuencia de comandos deseada. Lo único que se genera en el macro (que he llamado “IR_A_M1”) es lo siguiente:
sub IR_A_M1
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 ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, “.uno:InsertBookmark”, “”, 0, Array())
end sub
Quedo atento. Gracias, de nuevo.
Utiliza el código siguiente:
pero ten en cuenta dos cosas:
El nombre del marcador tiene que ser exacto (sensible a mayúsculas y espacios)
Si la macro la ejecutas desde el IDE el cursor va al marcador pero en el documento no ves el desplazamiento,
Tienes que crear un control en barra de herramientas, diálogo, formulario etc… y lanzar la macro desde ese botón, entonces verás el desplazamiento y el cursor estará en el marcador)
Sub Ir_a_Marcador
dim oVCursor as Object, oMarca as Object, Nombre_Marcador as string
Nombre_Marcador = “Marcador 1”
oVcursor =ThisComponent.currentcontroller.getViewCursor
if Not ThisComponent.Bookmarks.hasByName(Nombre_Marcador) then 'compruebo existencia
Msgbox “No hay marcadores con ese nombre.”
else
oMarca = ThisComponent.getBookmarks.getByName(Nombre_Marcador) ’
oVCursor.gotoRange(oMarca.getAnchor,false) 'voy al marcador
endIf
end sub