Allen Tabellen im Writer Dokument eine Vorlage zuweisen

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: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

Re: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von stemeiBE » Sa, 23.11.2019 17:16

@Stephan
Super! Vielen Dank. Irgendwie dachte ich, das sei komplizierter, aber bin eben noch nicht wirklich dazu gekommen
die Dokumentation zu lesen. Toxitom und Du habt mir viel Zeit und Mühe gespart ;-) Danke dafür!

Re: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von Stephan » Sa, 23.11.2019 09:07

Also wenn mir jetzt jemand verraten kann, wie man die Gesamtbreite sämtlicher Tabellen im
Writer Dokument in einem Durchgang per Makro justieren kann, würde ich mich freuen.
Indem Du, wie bei der Formatzuweisung wieder über alle Tabellen interierst und nun einfach die Breite (width) einstellst:

Code: Alles auswählen

Dim Doc As Object
Dim TextTables As Object
Dim Table As Object, oZelle as variant
Dim I As Integer, j as integer
dim aZellNamen()
Doc = ThisComponent
TextTables = Doc.getTextTables()
For I = 0 to TextTables.count - 1
   Table = TextTables(I)
   Table.width = 12000 '12 cm
Next I
insofern die Breiteneinstellung von der Ausrichtung der Tabelle tangiert ist muss wenn die Tabellen nicht links, rechts oder zentriert ausgerichtet sind, eine dieser Ausrichtungen angegeben werden oder es muss bei Manuell, von links und von rechts immer auch zumindest ein passender Abstandswert einbgegeben werden.

z.b. Ausrichtung rechts (https://www.openoffice.org/api/docs/com ... ation.html) und 12 cm breit:

Code: Alles auswählen

Dim Doc As Object
Dim TextTables As Object
Dim Table As Object, oZelle as variant
Dim I As Integer, j as integer
dim aZellNamen()
Doc = ThisComponent
TextTables = Doc.getTextTables()
For I = 0 to TextTables.count - 1
   Table = TextTables(I)
   Table.width = 12000 '12 cm
   Table.HoriOrient = 1 'rechts
Next I
z.B. Ausrichtung "von links" und linker Abstand 2 cm und 10 cm breit

Code: Alles auswählen

Dim Doc As Object
Dim TextTables As Object
Dim Table As Object, oZelle as variant
Dim I As Integer, j as integer
dim aZellNamen()
Doc = ThisComponent
TextTables = Doc.getTextTables()
For I = 0 to TextTables.count - 1
   Table = TextTables(I)
   Table.width = 10000 '12 cm
   Table.HoriOrient = 7 'von links
   Table.LeftMargin = 2000
Next I

Gruß
Stephan

Re: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von stemeiBE » Fr, 22.11.2019 13:23

O.k. das Problem mit dem Öffnen des Dokuments ist gelöst.
Also wenn mir jetzt jemand verraten kann, wie man die Gesamtbreite sämtlicher Tabellen im
Writer Dokument in einem Durchgang per Makro justieren kann, würde ich mich freuen.
Derweil werde ich mal Rocko's FAQ studieren, sobald ich Zeit finde.

Re: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von stemeiBE » Fr, 22.11.2019 12:45

@Rocko
Danke für den Hinweis.

Re: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von Rocko » Fr, 22.11.2019 10:31

Mein Hinweis hat zwar nichts mit der Makroprogrammierung zu tun, umso mehr aber mit der Tabellenfunktion als solcher im Writer.

viewtopic.php?f=27&t=54230&p=235524#p235523
viewtopic.php?f=27&t=54230&p=235524#p235524

Re: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von stemeiBE » Do, 21.11.2019 20:09

Die Gesamtbreite wäre soetwas in der Art wie ich das meinte.
Sowie evtl. noch ein paar weitere Dinge, zu denen ich aber momentan leider aus dem Gedächtnis grad' nichts sagen kann,
weil mir OO beim Laden des Dokuments immer hängen bleibt. Nachdem ich dieses kleine Problem behoben habe, könnte ich aber vielleicht noch die eine oder andere Fragen benennen, deren Lösung mich interressieren würde;-) Auf jeden Fall vielen Dank soweit für deine Mühe!

Re: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von Toxitom » Do, 21.11.2019 19:40

Hei,
..daß es einige Eigenschaften des äusseren Erscheinungsbildes einer Tabelle gibt, die man so nicht ansprechen kann...
Nein. Alle Eigenschaften, die Du über die GUI ansprechen könntest, kannst Du auch per Makro setzen. Eine Tabelle hat eigentlich keine eigenen Eigenschaften sondern repräsentiert die Summe der Eigenschaften der einzelnen Zellen.

Einzig die Anzahl der Zellen ( Spalten, Zeilen sowie die Gesamtbreite ) sind Eigenschaften der Tabelle - und auch nur dort zu defibieren (und so ein paar Spezialeigenschaften wie Umbruch etc). Aber auch das liesse sich alles per Makro definieren.

Suchste irgendetwas bestimmtes?

VG
Tom

Re: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von stemeiBE » Do, 21.11.2019 18:59

@ marcel_at_work
Eine bekannte sitzt zusammen mit anderen an einer Masterarbeit (Kommunikationspsychologie) und wertet dafür u.A auch Email und Gesprächsprotokolle aus. Die sollen dann schön formatiert sein, damit man sich bei Bedarf mal ein paar Seiten ausdrucken und sie zur
not auch wem Zeigen kann.Ich habe mich selbstloser weise bereit erklärt in IT Angelegenheiten zu helfen.
Nun ja, man wird sehen, wie viel Zeit mich das noch kosten wird;-)

@Toxitom
Vielen dank lieber Toxitom! Dein Code Funktioniert soweit problemlos und ist warscheinlich auch alles was ich brauche,
aber kann es sein, daß es einige Eigenschaften des äusseren Erscheinungsbildes einer Tabelle gibt, die man so nicht ansprechen kann, so
daß man hierfür z.Z. noch zwangsläufig das GUI benutzen muss?

Re: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von Toxitom » Do, 21.11.2019 08:40

Hei Stemei,

es gibt noch keine "echten" Tabellen-Vorlagen in AO/LO. Insofern kannst Du auch direkt keine zuweisen. Die bisherige Zuweisung erfolgt über definierte Muster mit internen Programmen - das kannst Du natürlich nachstellen.

Also: Die Tabelle selbst hat keinen "Style" (Formatvorlage), sondern lediglich die einzelnen Zellen. Und denen kannst Du einfach eine Absatzvorlage zuweisen bzw. die zugewiesene ändern:

Ich verwende Deinen Code und ergänze ihn:

Code: Alles auswählen

Dim Doc As Object
Dim TextTables As Object
Dim Table As Object, oZelle as variant
Dim I As Integer, j as integer
dim aZellNamen()
Doc = ThisComponent
TextTables = Doc.getTextTables()
For I = 0 to TextTables.count - 1
   Table = TextTables(I)  'liefert Dir die einzelne Tabelle als Objekt
   aZellNames = table.CellNames()   'liefert Dir die Namen der Zellen als Liste (array)
   REM jetzt über Zellen iterieren
   For j = 0 to ubound(aZellNames)
     oZelle = table.getCellbyName(aZellNames(j))   'Du erhälst das Objekt der einzelnen Zelle
     oZelle.Start.ParaStyleName = "meineVorlage"    'weist die Absatzvorlage "meine Vorlage" zu
   next j
 
Next I
Die Absatz-Vorlage muss existieren! Und mögliche Fehler habe ich im Code nicht abgefangen. Aber so kannst Du mal beginnen.

VG
Tom

Re: Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von marcel_at_work » Do, 21.11.2019 03:50

Hallöchen,

ich bin noch kein Experte in Writer und mich würde brennend mal interessieren, warum in einem Textdokument überhaupt 1500 Tabellen existieren?

Liebe Grüße,

Marcel

Allen Tabellen im Writer Dokument eine Vorlage zuweisen

von stemeiBE » Mi, 20.11.2019 14:16

Hallo zusammen,

ich wollte per Makro sämtlichen Tabellen im Writer Document eine andere Absatzvorlage zuweisen (stets die selbe),
frage mich aber, ob das z.Z. überhaupt möglich ist.

Die Schleife hatte ich mir so wie in diesem Beispiel vorgestellt:

Code: Alles auswählen

Dim Doc As Object
Dim TextTables As Object
Dim Table As Object
Dim I As Integer
Doc = ThisComponent
TextTables = Doc.getTextTables()
For I = 0 to TextTables.count - 1
 
   Table = TextTables(I)
  
   ' Editing table
 
Next I

'Table' aus dem voranstehenden Beispiel wollte ich dann ungefähr so wie nachstehend verwenden:

Code: Alles auswählen


dim dispatcher as object
dim args1(1) as new com.sun.star.beans.PropertyValue

args1(0).Name = "Template"
args1(0).Value = "Tabellen Inhalt"
args1(1).Name = "Family"
args1(1).Value = 2

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 
 rem  -  'Table' soll dann in einer Schleife  als Argument für '.executeDispatch' verwendet werden...
  		dispatcher.executeDispatch(Table, ".uno:StyleApply", "", 0, args1())

Jedoch kann ich 'Table' hier wohl aber gar nicht so direkt wie in meinem Beispiel benutzen.
Desweitern ist mir nicht klar, ob man '.uno:StyleApply' überhaupt auf eine einzelne Tabelle anwenden kann.

Der Hintergrund ist der, daß ich mit ein großen Dokument zu tun habe (u.A. ca. 1500 Tabellen), daß mal aus einem Konverter gekommen ist,
und bei dem Sämtliche Tabellen falsche Vorlagen nebst sonstige Einstellungen haben.

Kennt sich jemand von euch vielleicht damit aus?

Nach oben