Vím, jak v tabulce nastavit šířky sloupců. Ale poté, co některou z buněk příkazem SplitRange rozdělím svisle na více buněk, pak - již logicky - běžný způsob nelze použít. Jak tedy nastavím šířky těchto nově vzniklých buněk? Jestli někdo víte, poraďte prosím. Díky.
Příkaz SplitRange jsem nenašel, ale zajisté máte na mysli nabídku Split Cells neboli Rozdělit buňky obsluhovanou skrz UNO příkaz .uno:SplitCell .
Jestli to chcete manuálně tak stačí najet myší nahranu buňky a objeví se roztahovací kurzor.
Jestli to chcete makrem tak myslím, že nastavování šířek buněk někde mám, to bych musel dohledat, nebylo to myslím úplně snadné, ale teď fakt nevím.
Díky za reakci.
To je právě to - chci to provést makrem ve visual basicu. Znám tabulku oTable, název buňky sCellName a kurzor tabulky oTableCursor. Buňku pak úspěšně dělím následovně
oTableCursor = oTable.CreateCursorByCellName(sCellName)
oTableCursor.SplitRange(2, false)
Tím vzniknou 3 sub-buňky stejné šířky a tyto šířky bych já potřeboval změnit.
Nastavují se separátory (hrany) buněk pro každý řádek.
Makro vloží tabulku a zmenší buňku A1, pak rozdělí B3 na 3 buňky a levou v tom zmenší a pravou ještě víc.
Pozor, s tím zaplým UndoManagerem když se vyskytne chyba, tak občas Libre padá - třeba až když se zavře Writer. Chtěl jsem to nahlásit, ale ještě se mi nepodařilo to reprodukovat na nějakém jednodušším makru.
Sub InsertSimpleTableAtEnd
dim oDoc as object, oTable as object, oVCur as object, oRow as object, oCell as object, oTableCursor as object, pSeps(), iWidth&, undoMgr as object, sUndo$
oDoc=ThisComponent
oVCur=oDoc.CurrentController.getViewCursor()
sUndo="Vložit svojí tabulku"
undoMgr=oDoc.UndoManager 'Undo/Redo manažer
undoMgr.enterUndoContext(sUndo) 'aby byl jen jeden krok Zpět v Undo/Redo
oTable=oDoc.createInstance("com.sun.star.text.TextTable")
oTable.initialize(3, 4)
oDoc.Text.insertTextContent(oVCur.End, oTable, false)
with oTable
.RelativeWidth=100
.HoriOrient=0
'.TableTemplateName=""
end with
rem změna šířky buňky v prvním řádku, jde o to nastavit separátory v oRow.TableColumnSeparators
iWidth=oTable.TableColumnRelativeSum
oRow=oTable.Rows.getByIndex(0)
pSeps=oRow.TableColumnSeparators 'separátory (hrany) buněk
pSeps(0).Position=500
pSeps(2).Position=iWidth-500
oRow.TableColumnSeparators=pSeps()
rem rozdělelní buňky B3
oTableCursor=oTable.CreateCursorByCellName("B3")
oTableCursor.SplitRange(2, false)
rem jiné šířky v B3
oRow=oTable.Rows.getByIndex(2) 'třetí řádek
dim pSeps2() 'fakt nevím proč to hází chybu když se dále použije předchozí proměnná pSeps()
pSeps2=oRow.TableColumnSeparators() 'separátory
pSeps2(1).Position=pSeps2(1).Position-300
pSeps2(2).Position=pSeps2(2).Position+500
oRow.TableColumnSeparators=pSeps2
undoMgr.leaveUndoContext(sUndo)
End Sub
Thank you very very much. Jinak řečeno díky moc. Celej fór byl v tom, že mě prostě nenapadlo nadeklarovat tam to
podruhý. No, stane se. A ten Undo manager jsem tam taky neměl. Dobrá myšlenka. Takže dík moc za Váš čas.
Chyba s tím že nejde opakovaně použít jednu proměnnou nahlášena zde
https://bugs.documentfoundation.org/show_bug.cgi?id=157053