Macro per convertire una tabella in testo

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


    Other languages:

    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