Writer-Tabelle Spaltenbreiten-Macro

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Writer-Tabelle Spaltenbreiten-Macro

Re: Writer-Tabelle Spaltenbreiten-Macro

von plohrer » Mi, 29.09.2010 23:17

Super. Ich sehe, dieses Forum ist gut besetzt... Danke viel mal . Ich werde es auch mal durchtesten .... recht herzlichen Dank trotzdem für die Bemühungen.

Re: Writer-Tabelle Spaltenbreiten-Macro

von DPunch » Di, 28.09.2010 23:06

Aloha

Der Codeausschnitt von GrobMakrobiker erfüllt schon seinen Zweck.
Zu beachten ist dabei allerdings, dass
GrobMakrobiker hat geschrieben:

Code: Alles auswählen

    'Spaltenbreite anpassen nach Pintoyak
Dim oTblColSeps  'The array of table column separators.
oTblColSeps = oTable.TableColumnSeparators
      Rem Change the positions of the two separators.
oTblColSeps(0).Position = 8000
oTblColSeps(0).IsVisible = True
oTblColSeps(1).Position = 1000
oTblColSeps(0).IsVisible = True   
oTblColSeps(2).Position = 7000

 oTable.TableColumnSeparators = oTblColSeps
nicht wirklich funktionieren kann, da .Position keine relative, sondern eine absolute Angabe ist.
Im Besipiel würde der erste Spaltentrenner entsprechend bei Position 7000 stehen, der zweite Spaltentrenner bei Position 1000. Das geht logischerweise nicht.
Möglicherweise hat es deshalb nicht geklappt.
Der richtige Ansatz wäre:

Code: Alles auswählen

oTblColSeps = oTable.TableColumnSeparators

oTblColSeps(0).Position = 8000
oTblColSeps(1).Position = 9000
oTblColSeps(2).Position = 16000

oTable.TableColumnSeparators = oTblColSeps
Irgendwo habe ich allerdings gelesen, dass die Breiten sich insgesamt auf 10000 addieren müssen oder so - am besten einfach mal mit rumspielen, ich werd das bei Gelegenheit auch mal selber testen.

Re: Writer-Tabelle Spaltenbreiten-Macro

von GrobMakrobiker » Di, 28.09.2010 15:12

Hallo,

direkt kann man die Spaltenbreite soweit ich weiß nicht ansprechen. Es gibt da aber einen Abschnitt in Andrews Makro-Dokument (http://www.pitonyak.org/oo.php):

Code: Alles auswählen

    'Spaltenbreite anpassen nach Pintoyak
Dim oTblColSeps  'The array of table column separators.
oTblColSeps = oTable.TableColumnSeparators
      Rem Change the positions of the two separators.
oTblColSeps(0).Position = 8000
oTblColSeps(0).IsVisible = True
    
oTblColSeps(1).Position = 1000
oTblColSeps(1).IsVisible = True
         
oTblColSeps(2).Position = 7000
 oTable.TableColumnSeparators = oTblColSeps
Das habe ich mal probiert, hat bei mir aber nicht geklappt :-(

Dann hatte ich die Idee, es ginge auch mit unsichtbaren Bildern oder Shapes, die man in die unterste Zeile einfügt und deren Breite man bestimmt (die Bilder können ja sehr schmal, dafür sehr breit sein):

Code: Alles auswählen

' unsichtbare Objekte in letzte Zeile einfügen, damit die Spaltenbreite 
' eingestellt werden kann
' das Shape wird auf der Draw-Page-Ebene eingefügt
          oDP = oDok.getDrawPage()'.getByIndex( 0 ) 
              oZeilen.InsertByIndex(nZeile-1,1)
              For n = 0 to 2 ' einmal die Spalten durchgehen
                  oZelle = oTable.GetCellByPosition(n,nZeile-1)'nSpalte,nZeile)
                  oZellCursor = oZelle.CreateTextCursor
            oPlatz = oDok.createInstance("com.sun.star.drawing.RectangleShape")
               oGroesse.Height = 100
        Select Case n
        Case 0
               oGroesse.Width = 3000
        Case 1
               oGroesse.Width = 1000
           Case 2
               oGroesse.Width = 8000
           End Select
          oPlatz.Size = oGroesse
          oPlatz.FillStyle = com.sun.star.drawing.FillStyle.SOLID
          oPlatz.FillTransparence = 50
        oPlatz.TextAutoGrowWidth = FALSE 'Anpassen des Shapes an Text
        ' xray objLinie

         oZelle.InsertTextContent(oZellCursor, oPlatz, false)
Die unsichtbaren Shapes werden eingefügt und man müsste noch bestimmen, dass sie nicht über die Spalten rausragen. Ich hab dann rgendwann aber aufgehört und mein Projekt anders weitergemacht.
Vieleicht kommst Du ja weiter?

LG Groby

Writer-Tabelle Spaltenbreiten-Macro

von plohrer » So, 26.09.2010 18:39

Hallo Basic-Profis.
Ich bin ehrgeiziger Makro-Anfänger und möchte gerne folgendes Problem lösen. Ich erhalte von Extern eine ooo Writer "Tabelle1" mit 9 Spalten und voller Zahlen. Die 9 Spalten möchte ich per Makro mit folgenden Abständen (cm) darstellen : 50-20-14-14-14-14-... mm. Die Formatvorlagen sind nichts Neues oder Eigenes : "Tabellen-Überschrift und Tabellen-Inhalt".
Meine Makro-Tastatur-Eingaben sind : (Curser in der ersten Zeile), alt-a (alles Markieren), alt-t,alt-c (Tabelleneigenschaften), alt-m (Ausrichtung Manuell), ctrl-tab,ctrl-tab (Spalten), alt-1 (erste Spalte),5,2,2, ... , Return (OK). Makro beenden. Diese Tabelle sieht perfekt aus, genau so wie erwünscht. Das Makro-Resultat ist enttäuschend. Die Basic Procedur sagt mir (als Anfänger) nichts. Ich habe im Forum (auch bei Dannenhöfer) seit Tagen nach der Lösung gesucht, aber nichts entsprechendes gefunden. Hat jemand Lust und Laune mir bei diesem Problem behilflich zu sein ? Es ist nichts Dringendes, mein persönlicher Ehrgeiz ist geweckt und das MUSS doch machbar sein. Wo liegt überhaupt das Problem ? :?

Nach oben