Verknüpfungen und Seriendruck - wie "löse" ich das

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

Moderator: Moderatoren

TooniX
*
Beiträge: 12
Registriert: Fr, 24.03.2006 21:57

Verknüpfungen und Seriendruck - wie "löse" ich das

Beitrag von TooniX »

Die scheinen sich nicht zu mögen. Wenn man beim MailMerge SaveAsSingleFile=True setzt, sind im neuen Ergebnisfile die Verknüpfungen gelöscht. Wenn man alle Datensätze in eine einzelne Datei speichert, sind die Textfelder leer.

Zwar kann man anschließend alle Dateien einzeln aufmachen und mit

Code: Alles auswählen

	myFileProp(0).name="Hidden"
	myFileProp(0).value=False
	datei = StarDesktop.loadComponentFromURL(url, "_blank", 0, myFileProp() )
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	dispatcher.executeDispatch(datei.CurrentController.Frame, ".uno:UpdateAllLinks", "", 0, Array())
einzeln updaten, dazu kann man sie aber unschönerweise nicht hidden öffnen. (datei.getTextFields.refresh() ging bei mir trotz 3 Stunden fummeln nicht)

Was ich mir jetzt dachte, ist die TextFields einfach vor dem Seriendruck in Text umzuwandeln (und danach die Änderungen zu verwerfen). Nur wie geht das? Im Dialog kann man "Lösen" anklicken, aber das geht weder mit Dispatcher noch mit TextField.TextFieldMaster o.ä. Hat jemand eine Idee?


TooniX
TooniX
*
Beiträge: 12
Registriert: Fr, 24.03.2006 21:57

Beitrag von TooniX »

..Stunden später...

ich hab jetzt

Code: Alles auswählen

	While TextFieldEnum.hasMoreElements()
		TextField = TextFieldEnum.nextElement()
	    If TextField.supportsService("com.sun.star.text.TextField.DDE") Then 
			Link = TextField.TextFieldMaster.getPropertyValue("DDECommandElement")
			SheetCellArray() = Split(Link, ".") 
			oRange=ThisComponent.Sheets().getByName(SheetCellArray(0)).getCellRangeByName(SheetCellArray(1)+":"+SheetCellArray(1))
			TextField.getAnchor.setString(oRange.string)
		End If
	Wend

über alle DDE-Textfelder der Seriendruckvorlage geschickt. Damit wird für jedes DDE-Feld der Inhalt herausgekramt und das Textfeld durch seinen Inhalt als String (also Plaintext) ersetzt. Die Datei wird danach noch temporär gespeichert, darüber ein MailMerge geschickt, und zum Schluss die temporäre Datei gelöscht. Macht einen umständlichen Eindruck, aber geht größtenteils (bis auf: MailMerge in eine Datei verpanscht manchmal Positionsrahmen und schiebt sie auf irgendwelche falschen Seiten). Das Ganze geht übrigens nur aus der Calc-Datei heraus, in der die verknüpften Textfelder stehen, Evtl. sind meine Referenzen auf die Calc-Datei nicht optimal programmiert, aber jedenfalls geht es jetzt (und ich ins Bett).


TooniX
Antworten