Guida di LibreOffice 25.2
Usando il linguaggi di programmazione Basic o Python è possibile scrivere macro che applicano formattazioni a intervalli di celle di Calc.
Il frammento di codice sottostante crea una Sub chiamata FormatCellBorder che applica dei nuovi formati a un determinato intervallo di indirizzi all'interno del foglio corrente di Calc.
    Sub FormatCellBorder(cellAddress as String, newStyle as Byte, newWidth as Long, Optional newColor as Long)
        ' Crea la struttura UNO che conterrà il nuovo formato delle linee
        Dim lineFormat as New com.sun.star.table.BorderLine2
        lineFormat.LineStyle = newStyle
        lineFormat.LineWidth = newWidth
        If Not IsMissing(newColor) Then lineFormat.Color = newColor
        ' Ottiene la cella di destinazione
        Dim oCell as Object
        Set oCell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(cellAddress)
        ' Applica il nuovo formato a tutti i bordi
        oCell.TopBorder = lineFormat
        oCell.RightBorder = lineFormat
        oCell.LeftBorder = lineFormat
        oCell.BottomBorder = lineFormat
    End Sub
  La Sub appena descritta richiede quattro argomenti:
cellAddress è la stringa che indica l'intervallo di celle da formattare, indicato nel formato "A1".
newStyle è un numero intero che corrisponde allo stile del bordo (vedere il successivo paragrafo Stili delle linee).
newWidth è un numero intero che definisce lo spessore della linea.
newColor è un numero intero che corrisponde a un colore definito usando la funzione RGB.
Per richiamare FormatCellBorder creare una nuova macro e passare gli argomenti desiderati, come illustrato di seguito:
    Sub MyMacro
        ' Fornisce l'accesso alle costanti di stile della linea
        Dim cStyle as Object
        Set cStyle = com.sun.star.table.BorderLineStyle
        ' Formatta "B5" con bordi blu pieni
        FormatCellBorder("B5", cStyle.SOLID, 20, RGB(0, 0, 255))
        ' Formatta tutti i bordi dell'intervallo "D2:F6" con bordi rossi a puntini
        FormatCellBorder("D2:F6", cStyle.DOTTED, 20, RGB(255, 0, 0))
    End Sub
  È possibile implementare la stessa funzionalità in Python:
    from uno import createUnoStruct
    from scriptforge import CreateScriptService
    
    def formatCellBorder(cellAddress, newStyle, newWidth, newColor=0):
        # Definisce il nuovo formato della linea
        line_format = createUnoStruct("com.sun.star.table.BorderLine2")
        line_format.LineStyle = newStyle
        line_format.LineWidth = newWidth
        line_format.Color = newColor
        # il servizio Scriptforge per accedere agli intervalli di celle
        doc = CreateScriptService("Calc")
        cell = doc.XCellRange(cellAddress)
        cell.TopBorder = line_format
        cell.RightBorder = line_format
        cell.LeftBorder = line_format
        cell.BottomBorder = line_format
  Il frammento di codice seguente implementa una macro denominata myMacro che richiama formatCellBorder:
    from com.sun.star.table import BorderLineStyle as cStyle
    
    def myMacro():
        bas = CreateScriptService("Basic")
        formatCellBorder("B5", cStyle.SOLID, 20, bas.RGB(0, 0, 255))
        formatCellBorder("D2:F6", cStyle.DOTTED, 20, bas.RGB(255, 0, 0))
  Il codice in Python presentato sopra usa la libreria ScriptForge che è disponibile dalla versione 7.2 di LibreOffice.
Gli stili delle linee sono definiti in forma di costanti rappresentate da numeri interi. La seguente tabella elenca le costanti degli stili di linea disponibili in :
| Nome della costante | Valore intero | Nome dello stile di linea | 
|---|---|---|
| SOLID | 0 | Tinta unita | 
| DOTTED | 1 | Punteggiata | 
| DASHED | 2 | Tratteggiata | 
| FINE_DASHED | 14 | A tratti fini | 
| DOUBLE_THIN | 15 | Doppia sottile | 
| DASH_DOT | 16 | Tratto punto | 
| DASH_DOT_DOT | 17 | Tratto punto punto | 
Per saperne di più sulle costanti degli stili di linea, consultare la pagina BorderLineStyle Constant Reference nella documentazione delle API di LibreOffice API.
Gli oggetti Range possiedono una proprietà denominata TableBorder2 che si può usare per formattare i bordi degli intervalli di celle come avviene nella finestra di dialogo , area Cornice.
Oltre ai margini superiore, inferiore, sinistro e destro, TableBorder2 definisce anche i bordi verticali e orizzontali. La macro sottostante applica solamente i margini superiore e inferiore all'intervallo di celle "B2:E5".
    Sub TableBorder2Example
        Dim cStyle as Object
        Set cStyle = com.sun.star.table.BorderLineStyle
        ' Definisce il nuovo formato della linea
        Dim lineFormat as New com.sun.star.table.BorderLine2
        lineFormat.LineStyle = cStyle.SOLID
        lineFormat.LineWidth = 15
        lineFormat.Color = RGB(0, 0, 0)
        ' Struttura che memorizza la nuova definizione di TableBorder2
        Dim tableFormat as New com.sun.star.table.TableBorder2
        tableFormat.TopLine = lineFormat
        tableFormat.BottomLine = lineFormat
        tableFormat.IsTopLineValid = True
        tableFormat.IsBottomLineValid = True
        ' Applica il formato della tabella all'intervallo "B2:E5"
        Dim oCell as Object
        oCell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B2:E5")
        oCell.TableBorder2 = tableFormat
    End Sub
  È possibile implementare la macro in Python come segue:
    from com.sun.star.table import BorderLineStyle as cStyle
    from scriptforge import CreateScriptService
    
    def tableBorder2Example():
        bas = CreateScriptService("Basic")
        line_format = createUnoStruct("com.sun.star.table.BorderLine2")
        line_format.LineStyle = cStyle.SOLID
        line_format.LineWidth = 18
        line_format.Color = bas.RGB(0, 0, 0)
        table_format = createUnoStruct("com.sun.star.table.TableBorder2")
        table_format.TopLine = line_format
        table_format.BottomLine = line_format
        table_format.IsTopLineValid = True
        table_format.IsBottomLineValid = True
        doc = CreateScriptService("Calc")
        cell = doc.XCellRange("B2:E5")
        cell.TableBorder2 = table_format
  Per saperne di più sui sui attributi, consultare la pagina TableBorder2 Struct Reference nella documentazione della API di LibreOffice API.