Nápověda LibreOffice 24.8
V programovacích jazycích Basic nebo Python lze psát makra, která použijí na oblast buněk v Calcu určité formátování.
Následující část kódu vytvoří podprogram (Sub) pojmenovaný FormatCellBorder, který podle zadané adresy použije na oblast buněk v aktuálním listu Calcu nový formát ohraničení.
    Sub FormatCellBorder(cellAddress as String, newStyle as Byte, newWidth as Long, Optional newColor as Long)
        ' Vytvoří strukturu UNO, do níž se uloží nový formát čáry
        Dim lineFormat as New com.sun.star.table.BorderLine2
        lineFormat.LineStyle = newStyle
        lineFormat.LineWidth = newWidth
        If Not IsMissing(newColor) Then lineFormat.Color = newColor
        ' Zjistí cílovou buňku
        Dim oCell as Object
        Set oCell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(cellAddress)
        ' Použije na všechna ohraničení nový formát
        oCell.TopBorder = lineFormat
        oCell.RightBorder = lineFormat
        oCell.LeftBorder = lineFormat
        oCell.BottomBorder = lineFormat
    End Sub
  Výše uvedený Sub přijímá čtyři argumenty:
cellAddress je řetězec označující oblast, která se má formátovat, zapsaný ve formátu "A1".
newStyle je celočíselná hodnota odpovídající stylu čáry ohraničení (viz dále část Styly čar).
newWidth je celočíselná hodnota určující tloušťku čáry.
newColor je celočíselná hodnota odpovídající barvě definované pomocí funkce RGB.
Chcete-li podprogram FormatCellBorder zavolat, vytvořte nové makro a předejte mu požadované argumenty následovně:
    Sub MyMacro
        ' Umožňuje přistupovat ke konstantám pro styly čar
        Dim cStyle as Object
        Set cStyle = com.sun.star.table.BorderLineStyle
        ' Naformátuje ohraničení u "B5" na plné modré
        FormatCellBorder("B5", cStyle.SOLID, 20, RGB(0, 0, 255))
        ' Naformátuje všechna ohraničení v oblasti "D2:F6" na červená tečkovaná
        FormatCellBorder("D2:F6", cStyle.DOTTED, 20, RGB(255, 0, 0))
    End Sub
  Stejnou funkcionalitu je možné implementovat v Pythonu:
    from uno import createUnoStruct
    from scriptforge import CreateScriptService
    
    def formatCellBorder(cellAddress, newStyle, newWidth, newColor=0):
        # Definuje nový formát čáry
        line_format = createUnoStruct("com.sun.star.table.BorderLine2")
        line_format.LineStyle = newStyle
        line_format.LineWidth = newWidth
        line_format.Color = newColor
        # Služba ScriptForge pro přístup k oblastem buněk
        doc = CreateScriptService("Calc")
        cell = doc.XCellRange(cellAddress)
        cell.TopBorder = line_format
        cell.RightBorder = line_format
        cell.LeftBorder = line_format
        cell.BottomBorder = line_format
  V následujícím úryvku kódu je implementováno makro pojmenované myMacro, které funkci formatCellBorder volá:
    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))
  Výše uvedený kód Pythonu používá knihovnu ScriptForge, která je k dispozici od verze LibreOffice 7.2.
Styly čar jsou definovány jako celočíselné konstanty. Následující tabulka uvádí seznam konstant pro styly čar, které jsou k dispozici v :
| Název konstanty | Celočíselná hodnota | Název stylu čáry | 
|---|---|---|
| SOLID | 0 | Plná | 
| DOTTED | 1 | Tečkovaná | 
| DASHED | 2 | Čárkovaná | 
| FINE_DASHED | 14 | Jemně čárkovaná | 
| DOUBLE_THIN | 15 | Dvojitá tenká | 
| DASH_DOT | 16 | Čerchovaná | 
| DASH_DOT_DOT | 17 | Čerchovaná s dvěma tečkami | 
Další informace o konstantách pro styly čar naleznete v dokumentaci API pro LibreOffice v části BorderLineStyle Constant Reference.
Objekty s oblastí mají vlastnost TableBorder2, kterou lze použít pro stejné formátování ohraničení, jaké se nastavuje v dialogovém okně v části Uspořádání čar.
Kromě ohraničení nahoře, dole, vlevo a vpravo určuje TableBorder2 také svislé a vodorovné ohraničení. Následující makro nastavuje pro oblast "B2:E5" pouze ohraničení nahoře a dole:
    Sub TableBorder2Example
        Dim cStyle as Object
        Set cStyle = com.sun.star.table.BorderLineStyle
        ' Definuje nový formát čáry
        Dim lineFormat as New com.sun.star.table.BorderLine2
        lineFormat.LineStyle = cStyle.SOLID
        lineFormat.LineWidth = 15
        lineFormat.Color = RGB(0, 0, 0)
        ' Struktura pro uložení nové definice TableBorder2
        Dim tableFormat as New com.sun.star.table.TableBorder2
        tableFormat.TopLine = lineFormat
        tableFormat.BottomLine = lineFormat
        tableFormat.IsTopLineValid = True
        tableFormat.IsBottomLineValid = True
        ' Použije formát tabulky na oblast "B2:E5"
        Dim oCell as Object
        oCell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B2:E5")
        oCell.TableBorder2 = tableFormat
    End Sub
  Toto makro je možné implementovat v Pythonu následovně:
    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
  Další informace o atributech této struktury naleznete v dokumentaci API pro LibreOffice v části TableBorder2 Struct Reference.