BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben

Alles zur Programmierung im LibreOffice.
Antworten
DavidG
Beiträge: 195
Registriert: Do 22. Mär 2018, 21:41

[gelöst] Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben

Beitrag von DavidG » Sa 24. Nov 2018, 18:34

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
Zuletzt geändert von DavidG am Mo 26. Nov 2018, 17:21, insgesamt 1-mal geändert.
Gruß

David
___________________
WIN 10 PRO
LO 7.4.5.1 (x64)

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben

Beitrag von F3K Total » So 25. Nov 2018, 09:44

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
Windows 10: AOO, LO Linux Mint: AOO, LO

DavidG
Beiträge: 195
Registriert: Do 22. Mär 2018, 21:41

Re: Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben

Beitrag von DavidG » So 25. Nov 2018, 21:55

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
Gruß

David
___________________
WIN 10 PRO
LO 7.4.5.1 (x64)

F3K Total
Beiträge: 2410
Registriert: So 10. Apr 2011, 10:10

Re: Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben

Beitrag von F3K Total » Mo 26. Nov 2018, 16:05

Hier mal eine erste Version.
Viel Erfolg damit
Gruß R
Dateianhänge
Paragraph_Props_to_Calc.odt
(10.82 KiB) 150-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

DavidG
Beiträge: 195
Registriert: Do 22. Mär 2018, 21:41

[gelöst] Re: Writer Vorlage auslesen und alle Eigenschaften in ein Array schreiben

Beitrag von DavidG » Mo 26. Nov 2018, 17:21

Hallo R,

GENIAL! :D

Damit komme ich ein ganzes Stück weiter.

Vielen Dank!
Gruß

David
___________________
WIN 10 PRO
LO 7.4.5.1 (x64)

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten