Seite 1 von 1

Löschen von Benutzerfeldern?

Verfasst: Mi, 05.07.2006 16:51
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

Verfasst: Di, 11.07.2006 23:40
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.

Verfasst: Mi, 12.07.2006 08:33
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

Verfasst: Fr, 14.07.2006 11:59
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

Basic: löschen aller Benutzerfelder

Verfasst: Fr, 14.07.2006 20:47
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

Verfasst: Mo, 17.07.2006 15:02
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

Verfasst: Mo, 17.07.2006 22:31
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

Verfasst: Di, 18.07.2006 08:56
von harryh99
Hallo komma4,

danke, funktioniert hervorragend.

Gruß

Harryh99