Uso de macros para automatizar la escritura (1)
dim args1(0) as new com.sun.star.beans.PropertyValueargs1(0).Name = "Text"args1(0).Value = "Texto"dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
Sin entrar en detalles que ahora importa poco, tal y como vimos en otro momento también, lo fundamental de esta macro simple es su estructura, compuesta por una matriz de dos atributos y una instrucción de ejecución, por ese orden. Respecto a la primera nos interesa el segundo argumento (args1(0).Value = "Texto"), ya que podemos utilizarla para...
- A partir de una macro simple que usamos a modo de plantilla, sustituir esa palabra por otra, por una frase o por un texto de la longitud que deseemos, simplemente con pegar ese contenido en sustitución del que originalmente tiene la macro-base.
- Sustituir el texto por una variable, siempre de tipo string, que previamente declaramos dentro de la macro (2) y a la que asignamos un determinado contenido (una cadena de texto o una concatenación de cadenas de texto o la combinación de cadenas de texto y variables).
- Podemos generar algún tipo de procedimiento de personalización del contenido sin necesidad de acceder al IDE, asignando, a su vez, esa variable a un objeto InputBox() o a recursos más complejos de interface, como un cuadro de diálogo. De este modo no será necesario "programar" el script cada vez que deseemos usarlo.
- Y, como ya vimos, podemos utilizar la macro, reconvertida en subrutina, accediendo a ella desde un script que contendrá la variable de asignación de contenido antes indicada, la cual se utilizará como argumento en la llamada a la macro-subrutina. También es ese caso podemos emplear recursos de interface.
- Seleccionar texto del documento (desde inicio del documento) (macro simple)
dispatcher.executeDispatch(document,".uno:EndOfDocumentSel", "", 0, Array())
El cursor se encuentra situado al inicio del documento y se desplaza hasta el final seleccionado todo el texto.
- Seleccionar texto del documento (desde final del documento) (macro simple)
dispatcher.executeDispatch(document, ".uno:StartOfDocumentSel", "", 0, Array())
El cursor se encuentra situado al final del documento y se desplaza hasta el inicio seleccionado todo el texto.
- Seleccionar párrafo (desde el inicio del párrafo) (macro simple)
dispatcher.executeDispatch(document, ".uno:EndOfParaSel", "", 0, Array())
Posicionamos el cursor al inicio del párrafo.
- Seleccionar párrafo (desde el fin del párrafo) (macro simple)
- Seleccionar línea
dispatcher.executeDispatch(document, ".uno:EndOfParaSel", "", 0, Array())
Posicionamos el cursor al final del párrafo
dim args1(1) as new com.sun.star.beans.PropertyValueargs1(0).Name = "Count"args1(0).Value = 1args1(1).Name = "Select"args1(1).Value = true
Desde el inicio (posición del cursor: inicio de la línea a seleccionar) (macro simple)
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())
Desde el final (posición del curso: línea inferior) (macro simple)
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args1())
También podemos crear macros de formato, con lo que automatizamos el formateo del texto según nos interese, y sin tener que hacerlo "manualmente". Estas son algunas de la macros de este tipo:
- Fuente (en el ejemplo: Verdana) (Macro simple)
dim args1(4) as new com.sun.star.beans.PropertyValueargs1(0).Name = "CharFontName.StyleName"args1(0).Value = ""args1(1).Name = "CharFontName.Pitch"args1(1).Value = 2args1(2).Name = "CharFontName.CharSet"args1(2).Value = -1args1(3).Name = "CharFontName.Family"args1(3).Value = 5args1(4).Name = "CharFontName.FamilyName"args1(4).Value = "Verdana"dispatcher.executeDispatch(document, ".uno:CharFontName", "", 0, args1())
- Tamaño (en el ejemplo: 12) (Macro simple)
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FontHeight.Height"
args1(0).Value = 12
args1(1).Name = "FontHeight.Prop"
args1(1).Value = 100
args1(2).Name = "FontHeight.Diff"
args1(2).Value = 0
dispatcher.executeDispatch(document, ".uno:FontHeight", "", 0, args1())
- Texto justificado (Macro simple)
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "JustifyPara"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:JustifyPara", "", 0, args1())
Con este conjunto de macros simples, y otros que vayamos creando, dispondremos de un conjunto de herramientas que, transformadas en su caso, y/o empleadas desde script, nos permitirán realizar composiciones de texto de cierta complejidad y con el mínimo conocimiento del lenguaje OOo Basic. Grabar macro trabaja por nosotros.
NOTAS
(1) Esta entrada se basa y sustituye a en dos entradas publicadas originalmente el día 16/10/2023, tituladas respectivamente Writer. Trabajo con textos y Writer. Formateo de texto.
(2) En sentido estricto, si incluimos nuestra variable en el cuerpo de la macro, realmente la estamos convirtiendo en un script, ya que las macros generadas desde Grabar macro, no contienen variables de esa naturaleza, aunque admiten ser modificadas. En ese caso, personalmente prefiero considerarlas script, para no generar confusión entre unas y otros. De todas formas esto es mi opción, mientras que lo común es extender la denominación macro a todo segmento de código creado, de una u otra forma, sobre un documento (en este momento, un documento de texto, pero también sobre hojas de cálculo, presentaciones...
No hay comentarios:
Publicar un comentario
Comenta esta entrada