sehr schön dass es jetzt funktioniert.
Noch ein Hinweis am Rande, weil es doch etwas kompliziert war:
Sollte jemand die Spaltenbreiten per Array direkt im Makro einstellen wollen, so muss er wissen, dass sie in 1/1000 cm bezogen auf die Breite der Tabelle 100% = 10000 angegeben werden müssen.
Es gibt da den Wert ...
Code: Alles auswählen
.TableColumnRelativeSum
Hier ein Beispielcode:
Code: Alles auswählen
Sub S_modify_table
nTableWidth = 15000'Breite der Tabelle 15cm
nTableOrient = 3 'links
nNewColumnsCount = 6
nColumns_Width = Array(2500,5000,7500,10000,12500) 'Position der Spaltentrenner von links in cm * 1000
oTexttables = ThisComponent.Texttables
oTable = oTexttables(0) 'erste Tabelle
nTableColumnRelativeSum = oTable.TableColumnRelativeSum ' Fest eingetragener Wert von 10000
otable.HoriOrient = nTableOrient 'Ausrichtung der Tabelle
oTable.Width = nTableWidth 'Breite
nColumnsCount = oTable.Columns.Count
if nColumnsCount < nNewColumnsCount then
otable.columns.insertbyindex(nColumnsCount,nNewColumnsCount-nColumnsCount) 'Spalten zufügen falls weniger als erste Tabelle
endif
aTableColumnSeparators = oTable.TableColumnSeparators 'Spaltenbreiten auslesen
for i = 0 to uBound (aTableColumnSeparators)
aTableColumnSeparator = aTableColumnSeparators(i)
aTableColumnSeparator.Position = nColumns_Width(i)/nTableWidth * nTableColumnRelativeSum 'relative Breite, bezogen auf 10000
aTableColumnSeparators(i) = aTableColumnSeparator
next i
oTable.TableColumnSeparators = aTableColumnSeparators' Spaltenbreiten auf die Tabelle anwenden.
End Sub
