Gelöst: Textdokument: Inhalt aus Bereich löschen

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: Gelöst: Textdokument: Inhalt aus Bereich löschen

Re: Textdokument: Inhalt aus Bereich löschen

von pdidi » Di, 17.06.2008 20:02

Hallo Jürgen,

ich war doch zu neugierig und habe es noch ausprobiert.

Manchmal denke ich einfach viel zu umständlich. Das kommt vielleicht auch daher, dass ich einen Programmcode vorliegen habe, der für Microsoft Office funktionierte und den ich für OpenOffice umstricke.

Ich habe es jetzt wie folgt gelöst:

Code: Alles auswählen

' Textbereich ansprechen
textSection = OOoObjDok.TextSections.getByName(<MeinBereich>) 
' Cursor in Bereich setzen
textSectionCursor = OOoObjDok.Text.CreateTextCursorByRange (textSection.Anchor)
'Dokumentinhalt einfügen
Call textSectionCursor.insertDocumentFromUrl (<DokumentMitNeuemInhalt>, args)[[


Dadurch wird alles was im Bereich drin steht durch den Inhalt des zweiten Dokuments überschrieben.
Ich habe mich für InsertDocumentFromUrl entschieden, da der Inhalt samt Formatierungen (Tabellen, Textfelder, Textmarken) übernommen werden soll.

Vielen Dank,


Petra

Re: Textdokument: Inhalt aus Bereich löschen

von pdidi » Di, 17.06.2008 19:18

Hallo Jürgen,

danke für die schnelle Antwort. Ich probiere es morgen mal aus und melde mich dann wieder.

Viele Grüße,


Petra

Re: Textdokument: Inhalt aus Bereich löschen

von turtle47 » Di, 17.06.2008 18:59

Hi Petra,

mit folgendem Code wird im "Bereich1" der bestehende Text direkt durch den neuen Text ersetzt:

Code: Alles auswählen

Sub Bereich_Text_ersetzen
	oDocument = ThisComponent
	oDocSections = oDocument.TextSections
	mysection=oDocSections.getbyname("Bereich1")
	oAnchor= mysection.getAnchor
	oAnchor.setString("Mein  Text")
End Sub
Hilft das weiter?

Jürgen

Gelöst: Textdokument: Inhalt aus Bereich löschen

von pdidi » Di, 17.06.2008 17:14

Hallo,

jetzt muss ich mich doch noch mal hilfesuchend an euch wenden. Was ich auch gerne mache, da ihr mir bisher schon super geholfen habt. :D

Diesmal habe ich folgendes Problem:
Ich möchte von einem Programm aus (Lotus Notes) ein OpenOffice Dokument öffnen, einen bestimmten Bereich anspringen, den dort enthaltenen Inhalt löschen und anschließend neuen Inhalt an diese Stelle einfügen.

Mein OpenOffice Dokument ist dazu in einzelne Bereiche unterteilt, die ich auch namentlich ansprechen kann.

Code: Alles auswählen

textSection = OOoObjDok.TextSections.getByName(<MeinBereichsname>) 
Das Einfügen von neuem Inhalt funktioniert auch.

Code: Alles auswählen

textSectionCursor = OOoObjDok.Text.CreateTextCursorByRange (textSection.Anchor)
textSectionCursor.insertDocumentFromUrl (<DokumentMitNeuemInhalt>, args)


Jetzt fehlt nur noch das Markieren des Inhalts dieses Abschnitts und das Löschen des markierten Teils.
Meine bisherigen Versuche mit RemoveTextContent haben dazu geführt, dass nur der Bereich entfernt wurde, aber der Inhalt blieb erhalten.
Und über den Dispatcher Uno:Delete hatte ich auch keinen Erfolg (Fehler: automation object argument type mismatch).

So versuche ich zu markieren:

Code: Alles auswählen

' TextCursor in Bereich setzen
textSectionCursor = OOoObjDok.Text.CreateTextCursorByRange (textSection.Anchor)
' Bereich markieren
textSectionCursor.gotoEnd(True)
Das ist mein Versuch, den Inhalt über RemoveTextContent zu entfernen:

Code: Alles auswählen

OOoObjDok.Text.removeTextContent(textSection)
Und so sieht mein Versuch mit dem Dispatcher aus:

Code: Alles auswählen

OOoDispatcher = serviceManagerObj.createInstance("com.sun.star.frame.DispatchHelper") 
OOoDispatcher.executeDispatch(textSectionCursor, ".uno:Delete", "", 0, args)


args enthält jeweils eine Dummy-Werteliste (["Dummy!"], [0])

Vielen Dank im Voraus für eure Ideen!


Petra

Nach oben