Löschen von Benutzerfeldern?

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

Moderator: Moderatoren

harryh99
*
Beiträge: 14
Registriert: Mi, 30.11.2005 10:32

Löschen von Benutzerfeldern?

Beitrag von harryh99 »

Hallo,

gibt es eine Möglichkeit, Benutzerfelder komfortabel zu löschen? Ich habe ein Dokument mit ca. 900 Benutzerfeldern und möchte diese komfortabel löschen. Gibt es da in Starbasic ggf. einen Befehl oder vielleicht sogar in OpenOffice selbst eine Möglichkeit? Die X-Schaltfläche in den Optionen der Benutzerfelder ist bei so vielen Felder sehr mühsam und anscheinend lassen sich auch einige Benutzerfelder nicht löschen.
Vielleicht etwas wie:

Masters = ThisComponent.getTextFieldMasters()
Feld = Masters.getByName("com.sun.star.text.FieldMaster.User.AccusationMacro")
Feld.Delete?

Danke und Gruß

Harryh99
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Beitrag von komma4 »

Ich denke schon, dass es diese Möglichkeit gibt.

Gib' uns 'ne Chance, und die Angaben zu:
OOo Version
Dokumentenformat
was Du unter "Benutzerfeld" verstehst, wie sie erstellt wurden.

Danke.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Harry,

Textfelder löschst du - wie andere Textinhalte auch - über die Methode removeTextContent().
Bei Feldern mit einem Master bleibt dieser allerdings bestehen. Um das Masterobjekt endgültig zu löschen, bkeibt meiner ansicht nur die Methode dispose().

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
harryh99
*
Beiträge: 14
Registriert: Mi, 30.11.2005 10:32

Beitrag von harryh99 »

Hallo,

Openoffice-Version ist 2.0.1
Dokumentenformat ist im Grunde egal, momentan jedoch noch sxw, wäre aber auch odt nicht abgeneigt.
Die Benutzerfelder wurden unter Einfügen->Feldbefehl->andere->Variablen->Benutzerfeld eingetragen.
Ich suche nun eine Möglichkeit alle Benutzerfelder des Dokumentes komfortabel zu löschen (z.B. über ein Makro).

Danke und Gruß

Harryh99
Zuletzt geändert von harryh99 am Mo, 17.07.2006 15:29, insgesamt 1-mal geändert.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Basic: löschen aller Benutzerfelder

Beitrag von komma4 »

Das ist ein "Acht-Zeiler", radikales Löschen, ohne Fehlerprüfungen: Benutzung auf eigene Gefahr!

Getestet mit OOo 2.0.3, Linux, .odt Format

Code: Alles auswählen

Sub oooinfo_8136
' 20060714
' http://de.openoffice.info/viewtopic.php?t=8136
' Writer Makro OHNE Fehlerprüfungen !
'
' Loeschen aller:
' " Einfügen->Feldbefehl->andere->Variablen->Benutzerfeld "
' eines Writer-Dokuments

oDok = ThisComponent
enumTextFelder = ThisComponent.getTextFields().createEnumeration()

' alle
Do While enumTextFelder.hasMoreElements()
	oTextFeld = enumTextFelder.nextElement()
	' Benutzerfeld
	If oTextFeld.supportsService("com.sun.star.text.TextField.User") Then
		' weg damit
		oTextFeld.dispose()
	End If
Loop

End Sub
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
harryh99
*
Beiträge: 14
Registriert: Mi, 30.11.2005 10:32

Beitrag von harryh99 »

Hallo komma4,

ich habe gerade das Makro ausprobiert und es löscht leider die Benutzerfelder nur im Inhalt des Dokumentes nicht aus den Daten des Dokumentes. Sie tauchen weiterhin unter "Einfügen->Feldbefehl->andere->Variablen->Benutzerfeld" auf.
Ich würde jedoch gerne die kompletten Benutzerfelder auch aus den Metadaten des Dokuments loswerden. Gibt es da eine Möglichkeit?

Danke und Gruß,

Harryh99
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Beitrag von komma4 »

harryh99 hat geschrieben:Gibt es da eine Möglichkeit?
auf die GanzHarte:

Code: Alles auswählen

Sub oooinfo_8136_variante2

oDok = ThisComponent
for i = UBound( oDok.TextFieldMasters.ElementNames ) to 0 Step -1
	if Instr( _
		oDok.TextFieldMasters.ElementNames( i ), _
		"com.sun.star.text.FieldMaster.User" ) > 0 then
			oMaster = oDok.TextFieldMasters.getByName( _
			oDok.TextFieldMasters.ElementNames( i ) )
			oMaster.dispose()
	end if
next i

End Sub
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
harryh99
*
Beiträge: 14
Registriert: Mi, 30.11.2005 10:32

Beitrag von harryh99 »

Hallo komma4,

danke, funktioniert hervorragend.

Gruß

Harryh99
Antworten