(Gelöst)Zusatzinfos versteckt in Writerdokument mitspeichern

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Frank66
*
Beiträge: 11
Registriert: Mi, 05.03.2008 12:33
Wohnort: Bayern

(Gelöst)Zusatzinfos versteckt in Writerdokument mitspeichern

Beitrag von Frank66 »

Hallo,

ich müsste per Makro ein Dokument zusätzliche Infos speichern, die primär nur vom Makro aus zu lesen und zu schreiben sind. Es gibt zwar im "Datei"-"Eigenschaften" diese 4 Infofelder, das wäre schon mal ein Anfang, aber leider brauche ich aber viel mehr Felder, so wie es in MS-Würg :roll: ist, wo man da beliebig viele hinzufügen kann.

Habe schon eine mal versucht (hoffte auf eine undokumenterte Möglichkeit), es einfach in die Dokumentinfo reinzuschieben, es erfolgt auch kein Fehler, nur drin ist nichts...
Im folgendem Beispiel wird das Feld "Title" korrekt verändert, meine Zusatzinfo wird verschluckt.

Code: Alles auswählen

dim oPropValues2(1) as new com.sun.star.beans.PropertyValue

oPropValues2(0).Name = "Title"
oPropValues2(0).Value = "Inhalt für Titel"
oPropValues2(1).Name = "Zusatzinfo1"
oPropValues2(1).Value = "Inhalt für Zusatzinfo"
ThisComponent.getDocumentInfo().SetPropertyValues(oPropValues2)

oPropValues() = ThisComponent.getDocumentInfo().getPropertyValues()

on error resume next	' Datum/Zeitangaben müssen anders gelesen werden, aber hier egal...
For i=LBound(oPropValues()) To UBound(oPropValues())
  s = s & i & ": " & oPropValues(i).Name & " = " & oPropValues(i).Value
  s = s & CHR$(10)
Next
msgbox s
Hat irgendjemand noch ne andere Idee, die mich weiter bringen könnte?
Zuletzt geändert von Frank66 am Do, 13.03.2008 13:46, insgesamt 1-mal geändert.
Wie richtet man einen Betrieb zu Grunde?
mit Frauen - das ist am Schönsten
mit Spielen - das geht am Schnellsten
mit Computern - das ist am Sichersten
Die Steigerung sind dann die spielenden Frauen am Computer....
khsc7
***
Beiträge: 50
Registriert: Mo, 05.11.2007 13:08

Re: Zusatzinfos versteckt in Writerdokument mitspeichern

Beitrag von khsc7 »

Moin,

müßte das nicht
dim oPropValues2(2) as new com.sun.star.beans.PropertyValue
sein?

Hermann
Karolus
********
Beiträge: 7517
Registriert: Mo, 02.01.2006 19:48

Re: Zusatzinfos versteckt in Writerdokument mitspeichern

Beitrag von Karolus »

Hallo
khsc7 hat geschrieben: müßte das nicht....
dim oPropValues2(2) as new com.sun.star.beans.PropertyValue sein?

Hermann
Nein das wären drei opropvalue2-Paare


Wäre es nicht machbar das du mehrere Infos zusammenpackst:

Code: Alles auswählen

dim oPropValues2(0) as new com.sun.star.beans.PropertyValue

oPropValues2(0).Name = "Title"
oPropValues2(0).Value = "Inhalt für Titel/und_gleich_die_Zusatzinfo/und noch mehr"
und diese beim späteren auslesen wieder mit :
split(alles,/) auseinandernimmst ?

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Frank66
*
Beiträge: 11
Registriert: Mi, 05.03.2008 12:33
Wohnort: Bayern

Re: Zusatzinfos versteckt in Writerdokument mitspeichern

Beitrag von Frank66 »

Hi Karolus,

danke für die Antwort, wenn nichts besseres noch kommt, dann werde ich es so versuchen müssen. Muss aber erst mal Testen, wie viel Zeichen diese Felder aufnehmen können, wie gesagt, habe da etwas mehr an Infos zu hinterlegen.

Mir ist noch ne Idee gekommen, aber leider Termine, so dass ich es erst morgen testen kann. Werde mit MS-Würg da mal Dokumente mit vielen Zusatzinfos erzeugen und importieren, mal schauen, ob und wie Writer die Infos speichert.
Wie richtet man einen Betrieb zu Grunde?
mit Frauen - das ist am Schönsten
mit Spielen - das geht am Schnellsten
mit Computern - das ist am Sichersten
Die Steigerung sind dann die spielenden Frauen am Computer....
Frank66
*
Beiträge: 11
Registriert: Mi, 05.03.2008 12:33
Wohnort: Bayern

Re: Zusatzinfos versteckt in Writerdokument mitspeichern

Beitrag von Frank66 »

Hat mir jetzt keine Ruhe gelassen und habe es gefunden!

Hier ein Code, wo man es leicht nachvollziehen kann, falls es mal irgendjemand anderes noch braucht

Code: Alles auswählen

sub Propertytest
set DocInfo = ThisComponent.DocumentInfo

n = "freiesTestProp"
v = "neuer Inhalt um " & Time$
if DocInfo.PropertySetInfo.hasPropertyByName(n) then
	msgbox "Feld vorhanden mit Wert: " & DocInfo.GetPropertyValue(n)
	DocInfo.SetPropertyValue n, v	
else
	msgbox "Feld nicht vorhanden, wird neu angelegt"
	DocInfo.AddProperty n, 0, v
endif

end sub
Wie richtet man einen Betrieb zu Grunde?
mit Frauen - das ist am Schönsten
mit Spielen - das geht am Schnellsten
mit Computern - das ist am Sichersten
Die Steigerung sind dann die spielenden Frauen am Computer....
Antworten