Libre Office

synchronisation Spaltenbreiten über mehrere Tabellen

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
Antworten
vlad_tepesch
Beiträge: 4
Registriert: Do 8. Okt 2026, 17:14

synchronisation Spaltenbreiten über mehrere Tabellen

Beitrag von vlad_tepesch » Di 13. Okt 2026, 15:29

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.
Zuletzt geändert von vlad_tepesch am Mi 14. Okt 2026, 13:46, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2772
Registriert: Fr 10. Dez 2010, 10:01

Re: snchronisation Spaltenbreiten über mehrere Tabellen

Beitrag von karolus » Di 13. Okt 2026, 19:56

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?!
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

vlad_tepesch
Beiträge: 4
Registriert: Do 8. Okt 2026, 17:14

Re: snchronisation Spaltenbreiten über mehrere Tabellen

Beitrag von vlad_tepesch » Mi 14. Okt 2026, 10:01

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) 605 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

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2772
Registriert: Fr 10. Dez 2010, 10:01

Re: snchronisation Spaltenbreiten über mehrere Tabellen

Beitrag von karolus » Mi 14. Okt 2026, 10:40

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.
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

F3K Total
* LO-Experte *
Beiträge: 2519
Registriert: So 10. Apr 2011, 10:10

Re: snchronisation Spaltenbreiten über mehrere Tabellen

Beitrag von F3K Total » Mi 14. Okt 2026, 12:18

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
Dateianhänge
Texttable_Column_Width.odt
(21.39 KiB) 9-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Open Office
Antworten