Seite 1 von 1

synchronisation Spaltenbreiten über mehrere Tabellen

Verfasst: Di 13. Okt 2026, 15:29
von vlad_tepesch
Gibt es eine Möglichkeit mehrere (an sich unabhängige) Tabellen so konfigurieren, dass die Spaltenbreiten bei allen Tabellen gleich sind und bei Änderung auch synchron gehalten werden?

zB angenommen, ich hab mehrere Tabellen mit Datenreihen - es sieht hässlich aus, wenn bei jeder die spalten anders breit sind, vor allem, wenn sie im Text nicht weit voneinander Entfernt gesetzt sind.

Re: snchronisation Spaltenbreiten über mehrere Tabellen

Verfasst: Di 13. Okt 2026, 19:56
von karolus
Sollte doch funktionieren wenn du statt mehrerer Tabellen, alles in eine Tabelle packst, und für den Text dazwischen jeweils eine Tabellenzeile zu einer Zelle zusammenfasst?!

Re: snchronisation Spaltenbreiten über mehrere Tabellen

Verfasst: Mi 14. Okt 2026, 10:01
von vlad_tepesch
das wäre aber schon ein ziemlich ekliger hack, da man ja vor der eigentlichen Tabelle leerzellen einbauen müsste, um die Einrückung der Tabelle auf mittig manuell zu bewerkstelligen

Und es scheitert spätestens dann, wenn man verschiedene Tabellentypen hat, die untereinander gleich sein sollen, aber zueinander inkompatibel sind.
Screenshot 2026-10-14 100214.png
Screenshot 2026-10-14 100214.png (38.77 KiB) 609 mal betrachtet

Nebenbei: wie zur hölle bring man writer dazu, die Tabellenbeschriftung linksbündig am Tabellenrahmen auszurichten?
Er klatscht sie immer an den Zeilenanfang. Im Beispiel hab ich die Einzüge der Beschriftungen manuell angepasst

Re: snchronisation Spaltenbreiten über mehrere Tabellen

Verfasst: Mi 14. Okt 2026, 10:40
von karolus
vlad_tepesch hat geschrieben: ↑
Mi 14. Okt 2026, 10:01
…
Und es scheitert spätestens dann, wenn man verschiedene Tabellentypen hat, die untereinander gleich sein sollen, aber zueinander inkompatibel sind.
Hast du aber in deinem Eingangsbeitrag NICHT erwähnt!

Stelle eine Neue Frage im Unter-Bereich Makroprogrammierung und häng dort eine Beispiel.odt an.

Re: snchronisation Spaltenbreiten über mehrere Tabellen

Verfasst: Mi 14. Okt 2026, 12:18
von F3K Total
Moin,
wie Karolus bereits vorgeschlagen hat, sollte dieses Thema eigentlich im Bereich Makroprogrammierung behandelt werden, auch ich denke, dass es mit Bordmitteln nicht zu lösen ist.
Nun hat es mich interesssiert und ich habe einen Code geschrieben der:
  • Die erste Tabelle als "Mastertabelle" analysiert
  • Die Breite, die Ausrichtung, die Spaltenanzahl und die Spaltenbreite der folgenden Tabellen mit der ersten Tabelle synchronisiert, gelöscht werden keine Spalten
  • Die erste Tabellenüberschrift analysiert
  • Die Ausrichtung dieser Überschrift auf die folgenden überträgt
Anbei nun eine Beispieldatei.
Hier der Basiccode:

Code: Alles auswählen

Sub S_adjust_columns
     oTextfieldsenum = ThisComponent.Textfields.CreateEnumeration
    while oTextfieldsenum.hasmoreelements 
        oTextfield = oTextfieldsenum.nextelement
        if oTextfield.CurrentPresentation = 1  and  oTextfield.variableName = "Table" then 'erstes Tabellenbeschriftungsfeld
            nParaadjust = oTextfield.Anchor.Paraadjust 'Ausrichtung erstes Tabellenschriftungsfeld auslesen
        endif
    wend
    oTextfieldsenum = ThisComponent.Textfields.CreateEnumeration
    while oTextfieldsenum.hasmoreelements 
        oTextfield = oTextfieldsenum.nextelement
        if  oTextfield.variableName = "Table" then
            oTextfield.Anchor.Paraadjust = nParaadjust  'Ausrichtung erstes Beschriftungsfeld übertragen
        endif
    wend
    oTexttables = ThisComponent.Texttables
    oMasterTable = oTexttables(0) 'erste Tabelle
    nOrient = oMastertable.HoriOrient 'Ausrichtung erste Tabelle
    nWidth = oMasterTable.Width 'Breite erste Tabelle
    nMasterColumnsCount = oMasterTable.columns.count 'Spaltenanzahl
    aTableColumnSeparators = oMasterTable.TableColumnSeparators 'Spaltenbreiten erste Tabelle
    for i = 1 to oTexttables.count - 1
        oTable = oTexttables(i)
        nColumnsCount =  oTable.Columns.Count
        if nColumnsCount < nMasterColumnsCount then 
            otable.columns.insertbyindex(nColumnsCount,nMasterColumnsCount-nColumnsCount) 'Spalten zufügen falls weniger als erste Tabelle
        endif
        otable.Width = nWidth 'Breite erste Tabelle zuordnen
        oTable.HoriOrient = nOrient 'Ausrichtung erste Tabelle zuordnen
        oTable.TableColumnSeparators = aTableColumnSeparators 'Spaltenbreiten erste Tabelle zuordnen
    next i
End Sub
Viel Erfolg,
Gruß R