Jump to content

Macros/Writer/008/es

From The Document Foundation Wiki
This page is a translated version of the page Macros/Writer/008 and the translation is 100% complete.


Descripción

Para LibreOffice Writer, deseamos escribir una macro que emule la funcionalidad de Template:BC.

Usaremos el despachador para activar el comando .uno:ConvertTableToText '(esta parte del código se puede grabar si la opción de Herramientas ▸ Opciones ▸ Avanzado ▸ Habilitar la grabación de macros (puede ser limitada) está activada).

La macro comienza colocando el cursor en la tabla con el método Select de CurrentController y pasándolo al cursor situado en la tabla

Para el siguiente ejemplo, se convierte una tabla que tiene por nombre "Tabla2".

El acceso a la tabla se hace mediante el método getByName del servicio TextTables. El método com.sun.star.text.createCursorByCellName[1] permite la creación de un cunrsor en la celda A1. Este cursor se utiliza para seleccionar la tabla y entonces hacer la conversión.

Código

en LibreOffice Basic:

Option Explicit

Sub Main()
    TableToText("Table2")
End Sub


Sub TableToText(TableName As String)
    '''Convertir una tabla en texto'''

    Dim oDoc As Object ' com.sun.star.uno.XInterface (ThisComponent)
    Dim oTable As Object ' com.sun.star.text.XTextTable
    Dim oTableCursor As Object ' com.sun.star.text.XTextTableCursor
    Dim document As Object ' com.sun.star.frame.XFrame (ThisComponent.CurrentController.Frame)
    Dim dispatcher As Object ' com.sun.star.frame.DispatchHelper
    Dim args(0) As New com.sun.star.beans.PropertyValue

    oDoc = ThisComponent
    oTable = oDoc.TextTables.getByName(TableName)
    oTableCursor = oTable.createCursorByCellName("A1")
    oDoc.CurrentController.select(oTableCursor)

    document = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    args(0).Name = "Delimiter"
    args(0).Value = CHR$(9) ' ASCII char #9 = TAB

    dispatcher.executeDispatch(document, ".uno:ConvertTableToText", "", 0, args())

End Sub ' TableToText

Archivo ODT para probar la macro

Notas