Macro per convertire una tabella in testo

From The Document Foundation Wiki
< Macros‎ | Writer
Jump to: navigation, search
This page is a translated version of the page Macros/Writer/008 and the translation is 100% complete.

Other languages:
English • ‎français • ‎italiano

Descrizione

Si desidera scrivere una macro per LibreOffice Writer, che simula la funzionalità del comando Tabella ▸ Converti ▸ Tabella in testo....

Viene utilizzato il dispatcher per richiamare il comando .uno:ConvertTableToText (questa parte di codice può essere registrata se è attiva l'opzione Stumenti ▸ Opzioni ▸ Avanzate ▸ Abilita la registrazione di macro (potrebbe essere limitata)).

La macro inizia posizionando il cursore nella tabella con il metodo Select dell'oggetto CurrentController e passandogli il cursore creato nella tabella.

Nell'esempio seguente viene convertita una tabella denominata "Tabella2".

L'accesso alla tabella avviene tramite il metodo getByName del servizio TextTables. Il metodo com.sun.star.text.createCursorByCellName[1] permette di creare un cursore nella cella A1. Questo cursore viene posi usato per selezionare la tabella e poi eseguire la conversione.

Codice

In LibreOffice Basic:

Option Explicit

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


Sub TableToText(TableName As String)
    '''Converte una tabella in testo'''

    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

File ODT di esempio con la macro

Note