Writer Dokument Bearbeiten und Texte einfügen?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Writer Dokument Bearbeiten und Texte einfügen?

Re: Writer Dokument Bearbeiten und Texte einfügen?

von DPunch » Mi, 21.12.2011 12:54

Aloha

Code: Alles auswählen

enumTextFields = thisComponent.TextFields.createEnumeration
Do While enumTextFields.hasMoreElements
  thisTextField = enumTextFields.NextElement
  If thisTextField.supportsService("com.sun.star.text.textfield.JumpEdit") Then
    'REM Platzhalter gefunden
  End If
Loop
Loop

Re: Writer Dokument Bearbeiten und Texte einfügen?

von MikeRo » Mi, 21.12.2011 11:17

Platzhalter einfügen ist ja kein Problem. Aber wie spreche ich diese an und ersetze Sie?
Speziell bei Grafiken?

Re: Writer Dokument Bearbeiten und Texte einfügen?

von DPunch » Di, 20.12.2011 22:34

Aloha

Das ist auch eine Möglichkeit, ersetzt Dir aber alle Vorkommen, ob nun relevante Felder oder nicht.
Zudem bietet sich z.B. nicht die einfache Möglichkeit, z.B. Platzhalter für Bilder zu definieren.

Re: Writer Dokument Bearbeiten und Texte einfügen?

von MikeRo » Di, 20.12.2011 14:03

Ich habe es nun so gelöst.

Code: Alles auswählen

Sub AB_FK_AdressdatenEinfuegen

	globalScope.BasicLibraries.loadLibrary("Tools")  
	dim aPlatzhalter() 'LIste der Platzhalter
	aPlatzhalter = array("<$Adressdaten1$>")
	dim aInhalt(uBound(aPlatzhalter))		'Liste der zu ersetzenden Texte
rem---DB Abfrage der Adressdaten

Call AB_FK_SQL
   		
	   		oStatement = oCon.createStatement()
    	  	oResult = oStatement.executeQuery(AB_SQL_Adresskopf)
           
   	   	IF NOT ISNULL(oResult) THEN
   			Do while oResult.Next
	       
		
		VAR_Abfragedaten = 	oResult.getString(1) & chr(10) &_
							oResult.getString(2) & chr(10 &_
							oResult.getString(3) & chr(10) &_
							oResult.getString(4) 

 		Loop		   		
		   		
		End If	

	aInhalt(0) = VAR_Abfragedaten
	REM Eintragen der Inhalte
	for i = 0 to uBound(aPlatzhalter())
		AB_FK_trageEin(oDoc, aInhalt(i), aPlatzhalter(i)
	next
	
End Sub

Code: Alles auswählen

Sub AB_FK_trageEin(oDoc as object, sNeuTxt as string, sPlatzhalter as string)

	oSuche = oDoc.createReplaceDescriptor()
	with oSuche
		.setSearchString(sPlatzhalter)
		.setReplaceString(sNeuTxt)
	end with
	oDoc.replaceAll(oSuche)

End Sub

Re: Writer Dokument Bearbeiten und Texte einfügen?

von DPunch » Di, 20.12.2011 13:35

Aloha

Du kannst die Platzhalter nach Belieben formatieren, da geht nichts verloren.

Nicht per "Replace" ersetzen, sondern per Placeholder.Anchor.String.

Re: Writer Dokument Bearbeiten und Texte einfügen?

von MikeRo » Di, 20.12.2011 12:53

Okay, dann lege ich mir Platzhalter ins Dokument und ersetze diese mit der replace Funktion.
Aber was ist, wenn der Text eine bestimmte Formatierung haben muss?
Wird die Formatierung beim ersetzen übernommen?

Re: Writer Dokument Bearbeiten und Texte einfügen?

von DPunch » Di, 20.12.2011 12:48

Aloha

Der Weg, den ich bei derlei Dingen empfehlen würde, ist der über Platzhalter (Placeholder), die den gleichen Namen wie die korrespondierenden Datenbankspalten tragen.

Writer Dokument Bearbeiten und Texte einfügen?

von MikeRo » Di, 20.12.2011 12:40

Hallo, ich finde nicht so recht einen Ansatz.

Ich fange gerade an ein neues Makro zu schreiben. Dieses mal muss ich ein Angebot in einem Writer Dokument erstellen. Es gibt eine Vorlage die ich nutze und in der an bestimmten stellen aus der Datenbank Daten eingefügt werden müssen (Adresse, Ansprechpartner etc...) Bei Calc Dokumenten ist das ja absolut kein Problem, aber wie mache ich es bei Writer Dokumenten? Muss ich mir Marken Setzen, und dann diese dann mit einem suchen und ersetzen Makro mit den Daten überspielen? Oder wie kann ich sonst auf die entsprechenden Stellen zugreifen? Immerhin habe ich ja nicht einfach nur Adressen wie bei Calc.

Vielen dank schon mal für jeden Tipp.

Nach oben