Seite 1 von 1
[gelöst] Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben
Verfasst: Sa 24. Nov 2018, 18:34
von DavidG
Hallo,
folgendes Makro startet MRI und listet mir die Properties für das Objekt "LeftPage" auf.
Es geht mir hier um die grundsätzliche Vorgehensweise, damit ich auch alle Absatzformatierungen
in ein Array laden kann und den/die Arrayinhalte/e danach in ein Calc-Dokument schreibe.
Sinn und Zweck ist es bei einem sehr großen Writer-Dokument eine Übersicht über alle benutzerdefinierten Vorlagen zu bekommen.
Nun möchte ich nicht, dass mir hier jemand das ganze Programm schreibt, sondern ich brauch einen Anfang wie ich
alle
Properties (Name --> Value Type --> Value) der jeweiligen Formatvorlage in ein Array einlesen kann.
Code: Alles auswählen
Sub ReadProperties
oDocPageStyles = ThisComponent.getStyleFamilies().getByName( "PageStyles" )
oDocPageStyle = oDocPageStyles.getByName( "Left Page" )
oDocPageStyle.followStyle="Rigth Page"
' Properties Name --> Value Type --> Value
mri oDocPageStyle
' Enumeration --> Propertie Name ...
' In Array
' Array in Calc-Tabelle
End Sub
Vielen Dank
Re: Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben
Verfasst: So 25. Nov 2018, 09:44
von F3K Total
Moin,
habe gerade versucht so ein Makro, zu schreiben, ein leeres Writer Dokument hat bereits 120 Absatzvorlagen, mit jeweils 170 Eigenschaften (Properties).
Das gäbe also ein Calcdocument mit 20400 Werten, halte ich für etwas unübersichtlich.
Ausserdem ist deine Frage unklar, einerseites schreibst du "LeftPage", was einer Seitenvorlage entspricht, um dann wieder auf Absatzvorlagen zu kommen.
Was denn nu?
Denke du solltest dich etwas einschränken.
Mit dem folgenden Makro findet man alle Absatzvorlagen die benutzerdefiniert und im Gebrauch sind:
Code: Alles auswählen
Sub ReadProperties
oStyleFamilies = ThisComponent.StyleFamilies
oParagraphStyles = oStyleFamilies.ParagraphStyles
aElementnames = oParagraphStyles.Elementnames
for i = 0 to uBound (aElementnames)
oStyle = oParagraphStyles.getbyname(aElementnames(i))
if oStyle.isInUse AND oStyle.isUserDefined then
MRI oStyle
endif
next i
End Sub
Gruß R
Re: Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben
Verfasst: So 25. Nov 2018, 21:55
von DavidG
Hallo R,
vielen Dank für Deine Unterstüzung.
Das es nicht gerade wenig Informationen zu Properties gibt ist mir klar.
Habe es jedoch nicht ausgerechnet.
Wie man sich ausdrückt und wie andere dieses verstehen ist nicht immer ganz einfach.
Deshalb versuche ich es hier erneut zu verdeutlichen.
Egal ob Seitenvorlage oder Absatzvorlage, zu beiden gibt es die Eigenschaften des jeweiligen Objektes.
Dazu habe ich Deinen Code, um eine weitere IF-Anweisung ergänzt.
Code: Alles auswählen
Sub ReadProperties
oStyleFamilies = ThisComponent.StyleFamilies
oParagraphStyles = oStyleFamilies.ParagraphStyles
aElementnames = oParagraphStyles.Elementnames
for i = 0 to uBound (aElementnames)
oStyle = oParagraphStyles.getbyname(aElementnames(i))
if oStyle.isInUse AND oStyle.isUserDefined then
'**********************************'*** ERGÄNZUNG ******************************************************************************
REM "sStandard" ist eine neue benutzerfdefinierte Absatzvorlage
if oStyle.Name ="sStandard" then
MRI oStyle
' Hier fehlt nun die Möglichkeit alle Properties von "sStandard" in ein Array zu schreiben.
' Zur Verdeutlichung habe ich einzeln aufgelistet, später sollen die Arrayfelder per Schleife gefüllt werden.
' Array-Feld (0,0) = Eigenschafts-Name
' Array-Feld (0,1) = Value Type
' Array-Feld (0,2) = Value
' Array-Feld (1,0) = Eigenschafts-Name
' Array-Feld (1,1) = Value Type
' Array-Feld (1,2) = Value
' usw.
End IF
'***********************************************************************************************************************************
end if
next i
End Sub
Re: Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben
Verfasst: Mo 26. Nov 2018, 16:05
von F3K Total
Hier mal eine erste Version.
Viel Erfolg damit
Gruß R
[gelöst] Re: Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben
Verfasst: Mo 26. Nov 2018, 17:21
von DavidG
Hallo R,
GENIAL!
Damit komme ich ein ganzes Stück weiter.
Vielen Dank!