Macro per convertire una tabella in testo
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Descrizione
Si desidera scrivere una macro per LibreOffice Writer, che simula la funzionalità del comando
▸ ▸ .Viene utilizzato il dispatcher per richiamare il comando .uno:ConvertTableToText (questa parte di codice può essere registrata se è attiva l'opzione
▸ ▸ ▸ ).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