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! :D

Damit komme ich ein ganzes Stück weiter.

Vielen Dank!